public static int gatMaxlenOfHuiwen(String s){
if(s==null || s.length()<=0){
return 0;
}
int maxLen = 1;
char[] generatedChars = getInsertedArray(s);
for(int i = 2; i<generatedChars.length-1-2; i++){
int tmpLen = 1;
while(generatedChars[i-tmpLen] == generatedChars[i+tmpLen]){
tmpLen++;
}
maxLen = getMax(maxLen, tmpLen-1);
}
return maxLen;
}
// #a#b#c
public static char[] getInsertedArray(String s){
if(s==null || s.isEmpty()){
return null;
}
char[] temp = new char[2*s.length()+3];
temp[0] = '$';
temp[1] = '#';
char[] chars = s.toCharArray();
for(int i=0; i<s.length(); i++){
temp[i*2+2] = chars[i];
temp[i*2+2+1] = '#';
}
temp[2*s.length()+2] = '\0';
return temp;
}
public static int getMax(int value1, int value2) {
if (value1 > value2) {
return value1;
}
return value2;
}
注意这里数组前后端有个$ '\0' 这样就不用判断数组是否到头尾了。