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"
Input: "cbbd"
Example:
Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.
Input: "cbbd"
Output: "bb"
class Solution {
public:
string longestPalindrome(string s) {
if(s.empty()) return ""; //空串
if(s.size() == 1) return s; //单字符串
int start = 0, len = 1; //回文子串开始,长度
for(int i = 0;i<s.size();){
if(s.size()-i <= len/2) break;
int j = i, k = i;
while(k<s.size()-1 && s[k] == s[k+1]) k++; //掠过重复字符
i = k+1; //i存储回文子串对称轴心,如有重复字符的话,指向重复字符的后一个
while(k<s.size()-1 && j>0 && s[k+1]==s[j-1]) { k++; j--; }
int newlen=k-j+1;
if(newlen>len){
len = newlen;
start = j;
}
}
return s.substr(start,len);
}
};
Subscribe to see which companies asked this question.