这题很经典

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;
    }
};