class Solution {
public:
string longestPalindrome(string s) {
int n=s.size();
vector<vector<int> >dp(n,vector<int>(n,0));
string ans;
if(n==1)return s;
for(int i=0;i<n;i++){
dp[i][i]=1;
}
int maxl=0;
int begin=0;
for(int i=2;i<=n;i++){
for(int j=0;j<n;j++){
int k=j+i-1;
if(k>=n){
break;
}
if(s[j]!=s[k]){
dp[j][k]=0;
}else{
if(i<3){
dp[j][k]=1;
}else{
dp[j][k]=dp[j+1][k-1];
}
}
if(dp[j][k]==1&&i>maxl){
maxl=i;
begin=j;
}
}
}
if(maxl==0){
ans=s[0];
return ans;
}
ans=s.substr(begin,maxl);
return ans;
}
};
5. 最长回文子串
最新推荐文章于 2024-03-24 12:07:27 发布