【题解】(题解并非原创,仅为了加深自己的理解)
[代码]
class Solution {
public:
string longestPalindrome(string s) {
vector<char> c;
int max = 0;
int maxleft = 0, maxright = 0;
int n = s.size();
for (int i = 0; i < n; i++) {
int left = i, right = i;
// 第一步 单向扩展
while (left >= 1 && s[left-1] == s[left]) left--;
while (right < n-1 && s[right + 1] == s[right]) right++;
// 第二步 双向扩展
while (left > 0 && right < n-1 && s[left-1] == s[right+1]) {
left--;
right++;
}
//计算当前最大长度
int cur = right - left + 1;
// 如果有新的最大值 记录下来
if (cur > max) {
max = cur;
maxleft = left;
maxright = right;
}
}
return s.substr(maxleft,maxright - maxleft + 1);
}
};