class Solution {
public:
string longestPalindrome(string s) {
int dp[1005][1005]; // [L][R]
memset(dp,0,sizeof(dp));
int ans = 1;
for(int i=0;i<s.length();i++) dp[i][i] = 1;
for(int r=0;r<s.length();r++){
for(int l=r-1;l>=0;l--){
if(s[l] == s[r]){
if(l == r-1) dp[l][r] = 2;
else if(dp[l+1][r-1] != 0) dp[l][r] = dp[l+1][r-1] + 2;
ans = max(ans,dp[l][r]);
}
}
}
for(int i=0;i<s.length();i++){
for(int j=i;j<s.length();j++){
if(dp[i][j] == ans){
return s.substr(i,j-i+1);
}
}
}
return "";
}
};
leetcode:5 最长回文字串(dp)
最新推荐文章于 2022-04-09 22:44:37 发布