class Solution {
public:
string longestPalindrome(string s) {
int n=s.size();
vector<vector<bool>> dp(n,vector<bool>(n,false));
int len=0,row=0,col=0,maxi=0;
for(int k=0;k<n;k++){
for(int i=0,j=k;j<n;i++,j++){
if(k==0){
dp[i][j]=true;
}
else if(k==1){
if(s[i]==s[j]) dp[i][j]=true;
else dp[i][j]=false;
}
else{
if(s[i]==s[j] && dp[i+1][j-1]==true){
dp[i][j]=true;
}
else{
dp[i][j]=false;
}
}
if(dp[i][j]){
len=k+1;
if(len>maxi){
maxi=len;
row=i;
col=j;
}
}
}
}
return s.substr(row,col-row+1);
}};