```cpp
class Solution {
public:
string longestPalindrome(string s) {
int len = s.length();
int dp[1000][1000];
int maxLen=1;
int begin=0;
if(len==0)
return s;
for(int i=0;i<len;i++)
{
for(int j=0;j<len;j++)
{
if(j==i)
dp[i][j]=1;
else
dp[i][j]=0;
}
}
for(int i=0;i<len;i++)
{
for(int j=0;j<i;j++)
{
if(s[i]==s[j]&&(i-j==1||dp[j+1][i-1]==1))
{
dp[j][i]=1;
if(i-j+1>maxLen)
{
maxLen=i-j+1;
begin=j;
}
}
}
}
return s.substr(begin,maxLen);
}
};