题解 | #最长回文子串#
最长回文子串
http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
class Solution {
public:
int getLongestPalindrome(string A, int n) {
// write code here
int m = A.size();
int maxlen = 1;
if (m < 2) {
return 1;
}
vector<vector<bool>> dp(m, vector<bool> (m));
for(int i=0; i<m;i++){
dp[i][i] = true;
}
for (int L = 2; L <= m; L++){
for(int i = 0; i < n; i++){
int j = L + i -1;
if (j>=n){
break;
}
if (A[i] != A[j]){
dp[i][j] = false;
} else {
if (j - i<3){
dp[i][j] = true;
}
else{
dp[i][j] = dp[i+1][j-1];
}
}
if(dp[i][j] && j-i+1 > maxlen){
maxlen = j-i+1;
}
}
}
return maxlen;
}
};
查看8道真题和解析