题解 | #最长回文子串#
最长回文子串
http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
双指针中心扩散法,回文有两种情况,以单个字符对称,或者以两个字符对称
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param A string字符串
* @return int整型
*/
public int getLongestPalindrome (String A) {
// write code here
char []c=A.toCharArray();
int n=c.length;
int max=0;
for(int i=0;i<n;i++){
max=Math.max(expand(c,i,i,n,1),max);
max=Math.max(expand(c,i,i+1,n,2),max);
}
return max;
}
public int expand(char[]c,int i,int j,int n,int addLength){
int cnt=0;
while(i>=0&&j<n){
if(c[i]==c[j]){
cnt+=2;
}
else{
break;
}
i--;
j++;
}
return cnt-2+addLength;
}
}