要知道i,j之间的字符串是否是回文串只需要知道(i+1,j-1)是否是回文串并判断arr[i]是否等于arr[j]就可以了
class Solution {
public:
string longestPalindrome(string s) {
vector<vector<bool>> dp(s.length(),vector<bool>(s.length(),false));
int maxlen=0;
string str="";
for(int len=1;len<=s.length();len++)
{//第一重循环是判断子串的长度
for(int start=0;start<s.length();start++)
{//确定起点
int end=start+len-1;
if(end>=s.length())
break;
dp[start][end]=(len==1||(len==2&&s[start]==s[end])||(dp[start+1][end-1]&&s[start]==s[end]));
if(dp[start][end]&&len>maxlen)
{
str=s.substr(start,end-start+1);
maxlen=str.length();
}
}
}
return str;
}
};