class Solution {
public:
string longestPalindrome(string s) {
if(s.size()==0)return s;
int begin=0;
int max=1;
int dp[s.size()][s.size()];//记录i和j
for(int i=0;i<s.size();i++)
{
for(int j=0;j<s.size();j++)
{
if(i==j)dp[i][j]=1;//记录处于相同位置下的dp状态
else dp[i][j]=0;
}
}
for(int j=0;j<s.size();j++)
{
for(int i=0;i<j;i++)
{
if(s[i]==s[j]&&(j==i+1||dp[i+1][j-1]))//如果i位置和j位置相等且相邻或子串相邻,说明是回文串
{
dp[i][j]=1;//记录回文串这个状态
}
if(dp[i][j]&&j-i+1>max)//如果这个串长度大于之前的,就更新
{
max=j-i+1;
begin=i;//记录回文串初始位置
}
}
}
return s.substr(begin,max);//返回这个回文串
}
};
5. 最长回文子串
最新推荐文章于 2024-01-19 22:05:35 发布