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

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

作者: 再见地平线_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