最长回文子串

枚举字符串中的每个位置,以当前位置为中心向两边扩散,判断是否为回文串,并更新 res。
枚举字符串中的每个位置,以当前和右边位置中间的位置为中心向两边扩散,判断是否为回文串,并更新 res。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {
public:
string longestPalindrome(string s) {
string res;
int n = s.size();
for (int i = 0; i < n; i++) {
int l = i, r = i;
while (l >= 0 && r < n) {
if (s[l] != s[r]) {
break;
}
if (r - l + 1 > res.size()) {
res = s.substr(l, r - l + 1);
}
l--, r++;
}
l = i, r = i + 1;
while (l >= 0 && r < n) {
if (s[l] != s[r]) {
break;
}
if (r - l + 1 > res.size()) {
res = s.substr(l, r - l + 1);
}
l--, r++;
}
}
return res;
}
};