[LeetCode] Longest Palindromic Substring 最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 长度最长为1000。

示例:

输入: "babad"
输出: "bab"

注意: “aba”也是有效答案

示例:

输入: "cbbd"
输出: "bb"

思路:做这个题,需要考虑两个问题:
1、相同的字符一定是回文的
2、在相同的字符两侧有回文的字符

/**
 * @param {string} s
 * @return {string}
 */
var longestPalindrome = function(s) {
    let Maxlen=0,len=0,
        left,start,end,offset;

    for(let i=0;i//判断重复的字符长度
        while((i1)&&(s.charAt(i)===s.charAt(i+1))){
            i++;
        }
        end=i;
        len=end-start+1;
        //重复的两侧的字符是否回文
        let offstart=start;
        let offend = end;
        for(offset=1;offset<=Math.min(offstart,s.length-offend-1);offset++){
            if(s[offstart-offset]===s[offend+offset]){ 
                len+=2;
                start=start-1;
                end=end+1;
            }else{
                break;
            }
        }
        if(len>Maxlen){
            Maxlen=len;
            left=start;
        }
    }
   return s.substring(left,left+Maxlen);
};

你可能感兴趣的:(Leetcode)