class Solution {
public:
string longestPalindrome(string s) {
int maxlen=0;
int start=0;
int n=s.size();
string s2=s;
reverse(s2.begin(),s2.end());
vector<vector<int> > ivec(n+1,vector<int>(n+1,0));
for(int i=1;i<=s.size();++i){
for(int j=1;j<=s2.size();++j){
if(s[i]==s2[j]){
ivec[i][j]=ivec[i-1][j-1]+1;
}
if(maxlen<=ivec[i][j]){
maxlen=ivec[i][j];
start=j;
}
}
}
return s2.substr(start-maxlen,maxlen);
}
public:
string longestPalindrome(string s) {
int maxlen=0;
int start=0;
int n=s.size();
string s2=s;
reverse(s2.begin(),s2.end());
vector<vector<int> > ivec(n+1,vector<int>(n+1,0));
for(int i=1;i<=s.size();++i){
for(int j=1;j<=s2.size();++j){
if(s[i]==s2[j]){
ivec[i][j]=ivec[i-1][j-1]+1;
}
if(maxlen<=ivec[i][j]){
maxlen=ivec[i][j];
start=j;
}
}
}
return s2.substr(start-maxlen,maxlen);
}
};
O(n2)