1.遍历字符串的所有字符,由于回文串的长度可能是偶数,也可能是奇数。
2.对每个字符是回文串的奇数位或偶数位,分奇数和偶数进行讨论。
3.得出最长回文子串的长度。
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param A string字符串
* @return int整型
*/
public int getLongestPalindrome (String A) {
// write code here
int max = 0;
int odd = 0,even = 0;
for (int i = 0; i < A.length(); i++) {
if(i==0){
odd = 1;
even = dfs(A,i,i+1);
}else {
odd = dfs(A,i-1,i+1);
even = dfs(A,i,i+1);
}
max = max>odd?max:odd;
max = max>even?max:even;
}
return max;
}
private int dfs(String A,int left,int right){
String str = null;
while (left>=0&&right<A.length()){
if(A.charAt(left)==A.charAt(right)){
str = A.substring(left,right+1);
left--;
right++;
}else {
break;
}
}
return str ==null?0:str.length();
}
}

京公网安备 11010502036488号