1.题目描述
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"
2.分析:
给一个字符串,求回数,即正反读都相同.求出这个子集在字符串中的最大值.
3.解决:
class Solution {
public:
string longestPalindrome(string s) {
if(s.length() <= 1)
return s;
size_t start = 0, len =0;
for(size_t i =0; i<s.length() && s.length() - i >len/2;) //进行裁剪,如果当前剩余长度小于当前最长不进行
{
size_t left = i, right;
for(right = i+1; right < s.length() && s[right]== s[right-1];) //对于重复的字符进行自增的操作
right++;
for(i = right--; left >0 && right < s.length()-1 && s[left-1] == s[right+1];) //相等则向两边衍生
{
right++;
left--;
}
int clen = right - left + 1; //判断当前长度
if(clen > len)
{
len = clen;
start = left;
}
}
return s.substr(start,len);
}
};