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"
问题描述:给定字符串s,寻找最长回文子串。
解题思路:从i开始向两边遍历字符串,从s[i]或s[i+1]开始,看两边能否构成回文,如果可以则继续往两边遍历添加字符串,再将长度与最长结果比较。具体代码如下:
class Solution {
public:
string expand(string s, int c1, int c2){
int l = c1;
int r = c2;
while(l>=0 && r<=s.length()-1 && s[l]==s[r]){
l--;
r++;
}
return s.substr(l+1,r-l-1);
};
string longestPalindrome(string s) {
if(s.length()==0) return "";
string longest = s.substr(0,1);
for(int i=0;i<s.length();i++){
string p1 = expand(s, i, i);
if(p1.length()>longest.length()) longest=p1;
string p2 = expand(s, i, i+1);
if(p2.length()>longest.length()) longest=p2;
}
return longest;
}
};