5. 最长回文子串

158 阅读1分钟

5. 最长回文子串

  • 遍历字符串每一个字符
  • 最长回文字符串的长度存在奇数和偶数,且他们的对称中心轴不一样
  • 奇数回文,中心是一个数字
  • 偶数回文,中心是两个数字
  • 所以我们遍历s字符串,选取其中某一项,其实就是以它为中心轴线,往两边扩散查找
  • 因为选取的中心的最长回文是偶数回文还是奇数回文,所以我们让该项的下一项作为辅助查询一下

function f(i, j) { 中心轴为i和j,往两边查找,最长回文字符串

var longestPalindrome = function (s) {
    var res = "";
    var len = s.length
    for (var i = 0; i < len; i++) {
        var s1 = f(i, i);
        var s2 = f(i, i + 1);
        res = res.length > s1.length ? res : s1;
        res = res.length > s2.length ? res : s2;
    }
    return res;
    function f(i, j) {
        while (i >= 0 && j < len && s[i] == s[j]) {
            i--;
            j++;
        }
        return s.slice(i + 1, j);
    };
};