分析:
当左右两边元素不同时,即回文串判断失败时是:l+1 —> r-1 内所有元素个数构成回文串,不是l,r
所以共有 r-1 - (l+1) + 1 = r-l-1
使用s.substr(l+1,r-l+1)求回文串,是L+1不是L
class Solution {
public:
string longestPalindrome(string s) {
string res;
for (int i = 0; i < s.size(); i ++) {
int l = i - 1, r = i + 1;
while (l >= 0 && r < s.size() && s[l] == s[r]) l --, r ++;
if (res.size() < r - l - 1) res = s.substr(l + 1, r - l - 1); // 这里是 r - l - 1,不是 r-l+1
l = i, r = i + 1;
while (l >= 0 && r < s.size() && s[l] == s[r]) l --, r ++;
if (res.size() < r - l - 1) res = s.substr(l + 1, r - l - 1);
}
return res;
}