- 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。
示例 2:
输入:s = “cbbd”
输出:“bb”
示例 3:
输入:s = “a”
输出:“a”
示例 4:
输入:s = “ac”
输出:“a”
提示:
1 <= s.length <= 1000
s 仅由数字和英文字母(大写和/或小写)组成
class Solution {
public:
string findMax(string s, int x, int y) {
int i;
bool flag = false;
for (i = 0; (x - i) >= 0 && (y + i) <= s.size(); i++) {
if (s[x - i] == s[y + i]) {
flag = true;
} else {
break;
}
}
if (flag == true && x == y) {
i--;
return s.substr(x-i, 2*i+1);
} else {
return s.substr(x-i+1, 2*i);
}
}
string longestPalindrome(string s) {
int maxValue = -1;
string maxString;
int size = s.size();
if (size <= 1) {
return s;
}
//分奇数偶数两种情况
for (int i = 0; i <= size-1; i++) {
string odd = findMax(s, i, i);
string oddAno = findMax(s, i, i+1);
int maxer = -1;
string temp;
if (odd.size() > oddAno.size()) {
maxer = odd.size();
temp = odd;
} else {
maxer = oddAno.size();
temp = oddAno;
}
if (maxer > maxValue) {
maxValue = maxer;
maxString = temp;
}
}
return maxString;
}
};