class Solution {
public:
vector< vector<int> > dp;
int getLongestPalindrome(string A) {
int n = A.size();
dp.resize(n, vector<int>(n, 0)); //默认不回文;
for(int i=0; i<n; ++i){
dp[i][i] = 1; //单个字符一定回文;
}
int maxLen =1;
int len = 2;
while(len <= n){
for(int i=0; i<= n-len; ++i){
int end = i+len-1;
if(len == 2 && A[i] == A[end]){
dp[i][end] = 1;
maxLen = 2;
}else if(A[i] == A[end] && dp[i+1][end -1]){
dp[i][end] = 1;
maxLen = len;
}
}
++len;
}
return maxLen;
}
};

京公网安备 11010502036488号