Longest Palindromic Substring
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.
class Solution {//passed large test
public:
string longestPalindrome(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
map<int, int> record;
int maxLength = 0;
for(int palii = 0; palii < s.size(); ++palii){//start from the center of a palindrome
int matchCount = 0, jj = 0;
while(palii+jj < s.size() && palii-jj >=0 && s[palii+jj] == s[palii-jj]){//odd case
++jj;
}
if (maxLength < jj*2-1){
maxLength = jj*2-1;
record[maxLength] = palii;
}
matchCount = 0, jj = 0;
while(palii+jj+1 < s.size() && palii-jj >=0 && s[palii+jj+1] == s[palii-jj]){//even case
++jj;
}
if (maxLength < jj*2){
maxLength = jj*2;
record[maxLength] = palii;
}
}//for palii
int const centerIndex = record.rbegin()->second;
int const startIndex = centerIndex-maxLength/2+!(maxLength%2);
return s.substr(startIndex, maxLength);
}//()
};
No comments:
Post a Comment