Problem
Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
Code
string longestPalindrome(string s) {
// Note: The Solution object is instantiated only once and is reused by each test case.
int n =s.size();
if(n == 0)
return s;
vector<vector<bool> > p(n,vector<bool>(n,false));
int maxlen = 1;
int start_index = 0;
for(int i = 0;i < n;++i)
p[i][0] = true;
for(int i = 0;i < n - 1;++i){
if(s[i] == s[i+1]){
p[i][1] = true;
maxlen = 2;
start_index = i;
}
}
for(int len = 3;len <= n;++len){
for(int i = 0;i <= n - len;++i){
if(p[i+1][len-3] && s[i] == s[i + len - 1]){
p[i][len - 1] = true;
maxlen = len;
start_index = i;
}
}
}
return s.substr(start_index,maxlen);
}
No comments:
Post a Comment