Code:
class Solution {
public:
string longestPalindrome(string s) {
int n = s.length();
bool dp[n][n] = {false};
int maxx = 1;
int begin = 0;
int end = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j < i; j ++){
dp[j][i] = (dp[j+1][i-1] || (i-j < 2)) && s[i] == s[j];
if(dp[j][i] && i-j+1 >maxx){
maxx = i-j+1;
begin = j;
end = i;
}
}
dp[i][i] = true;
}
return s.substr(begin, end-begin+1);
}
};