检测效率较低,思路就是 找到俩个字母相同的索引,根据他们的索引判断是否为回文:
public int getLongestPalindrome(String A, int n) {
int result = 1;
char chars[] = A.toCharArray();
for(int i = 0;i < chars.length;i++){
for(int j = 0;j < i;j++){
if(chars[i] == chars[j] && i - j+1 > result && checkPali(chars,j,i)){
result = i-j+1;
}
}
}
return result;
}
boolean checkPali(char [] chars,int start,int end){
Stack<character> checkList = new Stack<>();
int mid = (end + start)%2 == 0?(end + start)/2 - 1: (end + start)/2;
for(int i = start; i<=mid;i++){
checkList.push(chars[i]);
}
int midc = (end + start)%2 == 0?mid+2:mid+1;
for(int j = midc; j <= end;j++){
char c = checkList.pop();
if(c != chars[j]){
return false;
}
}
return true;
}</character>