美文网首页程序员让前端飞
大厂面试高频题:如何寻找最长回文子串

大厂面试高频题:如何寻找最长回文子串

作者: 一一秋风 | 来源:发表于2021-02-04 17:54 被阅读0次
    function palindrome(s,l,n){
        while(l>=0 && n<s.length && s[l]===s[n]){
            l--;n++;
        }
        return s.substr(l+1,n-l-1)
    }
    
    
    function longestPalindrome(s) {
        let res='';
        for (let i = 0; i < s.length; i++) {
            // 以 s[i] 为中心的最长回文子串
            let  s1 = palindrome(s, i, i);
            // 以 s[i] 和 s[i+1] 为中心的最长回文子串
            let  s2 = palindrome(s, i, i + 1);
            // res = longest(res, s1, s2)
            res = res.length > s1.length ? res : s1;
            res = res.length > s2.length ? res : s2;
        }
        return res;
    }
    
    console.log(longestPalindrome('abac'))
    

    思路

    函数palindrome是判断某一部分是不是回文。采用双指针来往两边扩散判断。但是需要注意回文分为奇数和偶数。当为偶数时候,需要l 、n两个参数。

    api

    substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。

    参数 描述
    start 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
    length 可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。

    相关文章

      网友评论

        本文标题:大厂面试高频题:如何寻找最长回文子串

        本文链接:https://www.haomeiwen.com/subject/tvnbtltx.html