Q5. Longest Palindromic Substring
直达:https://leetcode.com/problems/longest-palindromic-substring/description/
Given a strings, find the longest palindromic substring ins. You may assume that the maximum length ofsis 1000.
Example:
Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.
Example:
Input: "cbbd"
Output: "bb"
分析
遍历字符串,从遍历到的字符开始向两边查找,判断是否满足回文。注意需要区分奇数子串和偶数子串两种情况。
C++代码
class Solution {
public:
string longestPalindrome(string s) {
int res_left = 0;
int res_right = 0;
if (s.size() < 2) return s;
for(int i=0; i<=s.size()-1;i++){
// 奇数长度子串
int left = i-1;
int right = i+1;
while(s[left] == s[right] && left >= 0 && right <= s.size()-1){
left--; right++;
}
if((right-left-2) > (res_right-res_left)){
res_right = right-1;
res_left = left+1;
}
// 偶数长度子串
right = i+1;
left = i;
while(s[left] == s[right] && left >= 0 && right <= s.size()-1){
left--; right++;
}
if((right-left-2) > (res_right-res_left)){
res_right = right-1;
res_left = left+1;
}
}
return s.substr(res_left, (res_right-res_left+1));
}
};
Last updated
Was this helpful?