public static string textformatting(string str) {
if (strl == 0) return "/$";
for (int i = 0; i < strl; i++) {
rt += "#" + str.Substring(i, 1);
public static string manacher(string str)
string fstr = textformatting(str);
int strlength = fstr.Length;
int[] array = new int[strlength];
for (int i = 1; i < strlength-1; i++) {
if (R > i) { array[i]= Math.Min(R - i, array[i_mirror]); }
while (fstr[i + 1 + array[i]] == fstr[i - 1 - array[i]]) { array[i]++; }
for (int i = 1; i < strlength-1; i++) {
return str.Substring((centerIndex - 1 - maxLen)/2, maxLen);
public static void Main()
string final = manacher(text);
System.Console.WriteLine(final);