public class stringproblem{//manacher algorithm preprocessing public static char[] Manacherstring (String str) {char[
] Chararr = Str.tochararray ();
char[] res = new Char[str.length () * 2 + 1];
int index = 0; for (int i = 0; I!= res.length i++) {Res[i] = (I & 1) = = 0?
' # ': chararr[index++];
return res; //manacher algorithm O (N) complexity to find the longest palindrome substring public static int maxlcpslength (String str) {if (str = NULL | | str.length ()
= = 0) {return 0;
} char[] Chararr = manacherstring (str);
int[] PArr = new Int[chararr.length];
int index =-1;
int PR =-1;
int max = Integer.min_value; for (int i = 0; I!= chararr.length i++) {parr[i] = PR > I?
Math.min (parr[2 * index-i], pr-i): 1; while (i + parr[i] < chararr.length && I-parr[i] >-1) {if (chararr[i + parr[i]] = = Chara
Rr[i-parr[i]]) parr[i]++;
else {break;
} if (i + parr[i] > PR) {PR = i + parr[i];
index = i;
max = Math.max (max, parr[i]);
return max-1; ///Add shortest string to form palindrome string, find the shortest string to add public static string Shortestend (String str) {if (str = NULL | | str.length ()
= = 0) {return null;
} char[] Chararr = manacherstring (str);
int[] PArr = new Int[chararr.length];
int index =-1;
int PR =-1;
int maxcontainsend =-1; for (int i = 0; I!= chararr.length i++) {parr[i] = PR > I?
Math.min (parr[2 * index-i], pr-i): 1; while (i + parr[i] < chararr.length && I-parr[i] >-1) {if (chararr[i + parr[i]] = = Chara
Rr[i-parr[i]]) parr[i]++;
else {break; } if (i + parr[i] > PR) {PR = i + parr[i];
index = i;
} if (PR = chararr.length) {maxcontainsend = Parr[i];
Break
} char[] res = new Char[str.length ()-maxcontainsend + 1];
for (int i = 0; i < res.length i++) {res[res.length-1-i] = chararr[i * 2 + 1];
Return string.valueof (RES);
public static void Main (String[]args) {//system.out.println ("Hello");
String str1 = "Abc1234321ab"; System.out.println (Maxlcpslength (str1));
Length of the longest palindrome string str2 = "abcd123321"; System.out.println (Shortestend (str2)); Returns the shortest string that was added}}