Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example:
Input: "cbbd" Output: "bb"
解题思路:
从当前一个字符开始,然后从字符串中最后一个进行判断是不是一个回文数,最终找到最长的,结束判断。
Code
class Solution {
public:
string longestPalindrome(string s) {
bool isLongestPad = false;
string longestPad = s.substr(0,1);
for(int j = 0; j < s.size(); ++j){
if(s.size()-j-1 < longestPad.size()) break;
for(int i = s.size()-1; i >= 0; --i){
if(i-j+1 < longestPad.size()) break;
isLongestPad = false;
if(s[j] == s[i] && i > j){
isLongestPad = subLongestPalindrome(s.substr(j, i-j+1));
if(isLongestPad){
if(longestPad.size() < i-j+1){
longestPad = s.substr(j, i-j+1);
break;
}
}
}
}
}
return longestPad;
}
bool subLongestPalindrome(string s){
if(s.size() == 1) return true;
if(s.size() == 2 && s[0] == s[1]) return true;
int left = 0, right = s.size()-1;
for(int i = 0; i < s.size()/2; ++i){
if(right >= left){
if(s[left] != s[right]) return false;
else{
left++;
right--;
}
}else break;
}
return true;
}
};