解题步骤:
参考代码:
class Solution {
public:
string longestPalindrome(string s) {
int n=s.size();
vector<vector<bool>> dp(n,vector<bool>(n));
//最长回文串的起始位置
int start=0;
//最长回文串的长度
int len=0;
for(int i=n-1;i>=0;i--)
{
for(int j=i;j<n;j++)
{
if(s[i]==s[j])
{
dp[i][j]=i+1<j?dp[i+1][j-1]:true;
if(dp[i][j]==true)
{
//如果新的回文串的长度大于旧的回文串的长度,就更新起始位置即长度
if(j-i+1>len)
{
start=i;
len=j-i+1;
}
}
}
}
}
//返回这个最长的回文子串即可
return s.substr(start,len);
}
};