Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
class Solution {
public:
string longestPalindrome(string s) {
int len = s.size();
if(len <= 1) return s;
bool dp[len][len];
memset(dp, 0, sizeof(dp));
int ansleft = 0,ansright = 0;
for(int i = 1;i < len;i ++){
dp[i][i] = true;
dp[i][i - 1] = true;
}
for(int k = 2;k <= len;k ++){
for(int i = 0;i <= len - k;i ++){
if(s[i] == s[i + k - 1] && dp[i + 1][i + k - 2] == true){
dp[i][i + k - 1] = true;
if(ansright - ansleft + 1 < k){
ansleft = i;
ansright = i + k - 1;
}
}
}
}
return s.substr(ansleft,ansright - ansleft + 1);
}
};
參考