这题很经典
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param A string字符串
* @return int整型
*/
int fun(string A, int left, int right)
{
// begin与end只能在可取元素范围内
while (left >= 0 && right <= A.size() - 1 && A[left] == A[right])
left --, right ++; // 注意这里begin是往左走,end是往右走
// 注意这里是减一, 一般区间长度为 end - begin - 1
// 因为最后出while 循环时,最后一个两边字符不相等
// 所以区间长度减二,即 end - begin - 1
return right - left - 1;
}
int getLongestPalindrome(string s) {
int maxn = 1;
// 循环边界量为S.size() - 1是因为,最后一个元素不可能为回文子串
// 从0开始是因为,只有一个元素时,回文串长度为它自己
for (int i = 0; i < s.size() - 1; i ++)
{
// 两种迭代方式,两边对称,或者保留中间一个元素,往两边迭代
maxn = max(maxn, max (fun(s, i, i), fun(s, i, i + 1) ) );
}
return maxn;
}
};