美文网首页
一个简单算法题的记录-求字符串中 无重复字符的最长子串的长度

一个简单算法题的记录-求字符串中 无重复字符的最长子串的长度

作者: 再见地平线_e930 | 来源:发表于2020-07-15 21:26 被阅读0次

    试例:


    一、思路

    建立一个空的数组来维护滑动窗口

    从字符串第0位开始,依次向后遍历

    如果该位置上的字符不在数组中,则把该字符push进数组

    如果该字符在数组中,则把数组中该字符及其之前的元素从数组中删除

    继续向后遍历

    图片来自网络

    二、用到的两个重要方法 

    indexOf: 返回数组中某个指定元素的位置,如果没有这个元素,则返回 -1

    splice:用于添加或删除数组中的元素,有三个参数(起始下标(必须),删除个数,增加的新元素)


    三、代码如下:

    /**

     * @param {string} s

     * @return {number}

     */

    var lengthOfLongestSubstring = function(s) {

        let arr = [];

        let max = 0;

        for(let i=0; i<s.length; i++) {

            let index = arr.indexOf(s[i]);  //判断该元素在数组的位置以及该元素是否存在与数组中

            if(index !== -1) {

                arr.splice(0, index+1);  //删除数组中该重复元素及其之前的所有元素

            }

            arr.push(s[i]);

            max = Math.max(arr.length, max);  //获取最大值

        }

        return max;

    };

    相关文章

      网友评论

          本文标题:一个简单算法题的记录-求字符串中 无重复字符的最长子串的长度

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