zoukankan      html  css  js  c++  java
  • 3. 无重复字符的最长子串

    3. 无重复字符的最长子串

     思路:

    创建一个队列,在队列里采用窗口滑动模式,向右挪到。

    1、创建一个new Set() 构造函数

    2、定义两个指针(嵌套for循环),第一个指针指向字符串开头不动 (j),第二个随着for循环移动遍历字符串(i)

    3、如果set里面没有s[i] ,说明还没重复的字符串 把 s[i] 添加到 set里,并检查是否要改变最大不重复字符maxLength的值。

    4、如果set里面有 s[i],就从set里删除s[i],并递增 j,接着检查set里是否有s[i],如此反复直到 set 里没有s[i],

    5、重复步骤 3、4直到遍历完整个队列。

    代码:

    /**
     * @param {string} s
     * @return {number}
     */
    var lengthOfLongestSubstring = function(s) {
        const set = new Set();
        let i=0,j=0, maxLength=0;
        if(s.length===0){
                return 0;
            }
        
        for(i;i<s.length;i++){
            if(!set.has(s[i])){
                set.add(s[i]);
                maxLength = Math.max(maxLength,set.size);
            }else{
                while(set.has(s[i])){
                    set.delete(s[j]);
                    j++;
                }
                set.add(s[i]);
            }
        }
        return maxLength;
    };
  • 相关阅读:
    模型层
    视图层,模板层
    ORM表关系建立
    CMakeList入门
    C++标准模板库
    C++基本语法
    g++应用说明
    Linux快捷键
    Git 操作备忘
    Block的详细介绍
  • 原文地址:https://www.cnblogs.com/jervy/p/14273773.html
Copyright © 2011-2022 走看看