求最长回文子串

解题思路
分析例子,得出三种情况。
1.非正常情况,长度小于2,直接返回。
下面为正常情况
2.得出结果长度为奇数。
3.得出结果长度为偶数。

当为奇数时,需要找到这个中心点,中心点向两边扩散都是一一对应相等的,如
aba,cabac。
当为偶数时,需要找到这两个中心点,两个中心点向两边扩散也都是一一对应相等的,如abba,cabbac。

理解了这个思路再看代码就非常好理解了。

代码如下

var longestPalindrome = function(s) {
    let result="",res;
    function maxLen(m,n){
        while(m>=0&&n<s.length&&s[m]==s[n]){
            m--;
            n++;
        }
        res=s.slice(m+1,n);
        if(res.length>result.length){
            result=res;
        }
    }
    for(let i=0;i<s.length;i++){
        maxLen(i,i);
        maxLen(i,i+1);
    }
    return result;
    
};

 

posted @ 2021-11-03 19:01  浣熊sky  阅读(24)  评论(0编辑  收藏  举报