public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param A string字符串
* @return int整型
*/
public int getLongestPalindrome (String A) {
// write code here
char[] cha = A.toCharArray();//将字符串转换为字符数组
int len = A.length();//字符串的长度
int count = 0;//计数器,统计最长回文子串的长度
boolean[][] dp = new boolean[len][len];//动态dp数组
for(int j=0;j<len;j++){//第一层,从纵坐标开始遍历
for(int i=0;i<=j;i++){//第二层,从横坐标开始遍历
if(i == j){//字符串长度为1时,必为回文字符串
dp[i][j] = true;//更新动态dp数组
if(dp[i][j]){//更新计数器
count = Math.max(count,j-i+1);
}
}else if(i == j-1){//字符串长度为2时,如果两个字符相等,也是回文字符串
if(cha[i] == cha[j]){
dp[i][j] = true;//更新动态dp数组
}
if(dp[i][j]){//更新计数器
count = Math.max(count,j-i+1);
}
}else if(j-i > 1){//字符串长度大于2时,如果两个字符相等并且dp[i+1][j-1]为真时,也是回文字符串
if(cha[i]==cha[j] && j>0 && i<len-1 && dp[i+1][j-1]){
dp[i][j] = true;//更新动态dp数组
}
if(dp[i][j]){//更新计数器
count = Math.max(count,j-i+1);
}
}
}
}
return count;
}
}