LeetCode 5. 最长回文子串

397 阅读1分钟

解析

解法1:中心扩散法

/**
 * @param {string} s
 * @return {string}
 */
//中心扩散法
var longestPalindrome = function(s) {
    let len = s.length
    if (s.length<2){
        return s
    }
    let res = ""
    for(let i = 0;i < len;i++){
        //奇数串
        findstr(i,i)
        //偶数串
        findstr(i,i+1)
    }
    function findstr(m,n){
        //从中线位置开始向两边扩散
        while(m >= 0 && n < len && s[m] === s[n]){
            m--
            n++
        }
        //注意点1:最终结束的边界的m,n正好比我们想要的多一次   所有正确的边界是m+1 n-1
        //注意点2:实际字符串长度n-m-1
        if(n-m-1 > res.length){
            res = s.slice(m+1,n)
        }
    }
    return res
};

方法二:动态规划法(待定)