5. 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。
示例 2:
输入:s = “cbbd”
输出:“bb”
题解
回文字符串的含义,正读和反读是一样的,所以分为两种情况,以中心1个字符左右增加,以中心两个字符左右增加,其中当是两个字符的时候需要左右相等,
边界条件,左侧大于等于0,右侧小于整体大小,并且左右相等,最后选择最大的字符串
while(l>=0&&r<s.size()&&s[l]==s[r]){
l--;
r++;
}
class Solution {
public:
string longestPalindrome(string s) {
string str = "";
for(int i = 0;i<s.size();i++){
string trmp1 = function(s,i,i);
str = str.size()>trmp1.size()?str:trmp1;
string trmp2 = function(s,i,i+1);
str = str.size()>trmp2.size()?str:trmp2;
}
return str;
}
string function(string s,int l,int r){
while(l>=0&&r<s.size()&&s[l]==s[r]){
l--;
r++;
}
return s.substr(l+1,r-l-1);
}
};