NC17.最长回文子串

class Solution {
public:
    int getLongestPalindrome(string A) {
        int rst = 0;
        int len = (int)A.length();
        for (int i = 0; i < len - rst; ++i) {
            for (int j = len - 1; j >= i; --j) {
                if (isPalindrome(A, i, j)) {
                    rst = max(rst, abs(j - i + 1));
                }
            }
        }
        return rst;
    }
private:
    bool isPalindrome(const string& s, int l, int r) {
        while (l < r) {
            if (s[l++] != s[r--]) {
                return false;
            }
        }
        return true;
    }
};

解题思路:

难点1:isPalindrome的抽象;

难点2:双指针的抽象;

难点3:len - rst进行优化,不用遍历完所有字符,如果最后剩下的字符数量小于rst就不用遍历了;