无重复字符的最长子串

/**
* @param {string} s
* @return {number}
/
/
*
* 思路 :我们可以利用set的特性来解这一题
* 1.创建一个set集合 创建两个指针,一个保存最大字符长度 变量
* 2.循环遍历s字串,判断set集合里是否存在s[i],不存在就添加到集合里,
* 存在则删除集合里存在的数据且删除存在数据之前的数据s[j] , j++ 循环往复;因为要得到是连续字串的长度
*/

    const lengthOfLongestSubstring = function (s) {
        if (s.length == 0) {//极端情况
            return 0;
        }
        let setMap = new Set(), i = 0, j = 0, maxLen = 0;
        for (i; i < s.length; i++) {
            if (!setMap.has(s[i])) {
                setMap.add(s[i])
                maxLen = Math.max(maxLen,setMap.size)
            } else {
                while (setMap.has(s[i])) {
                    setMap.delete(s[j])
                    j++
                }
                setMap.add(s[i])
            }
        }
        return maxLen
    };
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。