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.
1 - 简单的动态规划。
class Solution {
public:
string longestPalindrome(string s) {
string result = "";
for(int i=0;i<s.length();i++){
for(int j=0;j<2;j++){
string temp = palindrome(s,i,i+j);
if(temp.length()>result.length()){
result = temp;
}
}
}
return result;
}
private:
string palindrome(string s, int left, int right){
if(s[left]!=s[right]) return "";
//递推条件。如果一个子串已经是回文串,且这个子串左边的字符和右边的字符相同
//则此子串加上左右两个字符所得到的子串仍是回文串
while(s[left]==s[right] && left>=0 && right<=s.length()-1){
left--;
right++;
}
return s.substr(left+1,right-left-1);
}
};