最长回文子串
最长回文子串
https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af?tpId=117&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey
public int getLongestPalindrome(String A, int n) {
// write code here
int res = 1;
//以每个点作为中心(奇数个为中心) 求回文子串
for(int i=0;i<A.length();i++){
int temp=getLen(i,A);
//System.out.println(temp);
res = Math.max(res,temp);
}
return res;
}
private int getLen(int index,String A){
//if(index==6)
int max = 1;
//偶数
max = Math.max(l(index,A,0),max);
if(index>0){
//奇数
max = Math.max(l(index,A,1)+1,max);
}
return max;
}
private int l(int index,String A,int flag){
if(index+1>=A.length()) return 1;
int left = index;
//奇数个的时候需要-1
if(flag==1){
left = index-1;
}
int right = index+1;
int i=0;
int cnt=0;
while(left-i>=0 && (right+i)<A.length()){
if(A.charAt(left-i)==A.charAt(right+i)){
i++;
cnt++;
}else break;
}
return cnt*2;
}
查看21道真题和解析