zoukankan      html  css  js  c++  java
  • 求最小不重复字符串,这个题太有意思了记录一下

    var lengthOfLongestSubstring = function(s) {
                // 哈希集合,记录每个字符是否出现过
                const occ = new Set();
                const n = s.length;
                const ansArr = []
                // 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
                let rk = -1, ans = 0;
                for (let i = 0; i < n; ++i) {
                    if (i != 0) {
                        // 左指针向右移动一格,移除一个字符
                        
                        occ.delete(s.charAt(i - 1));
                        // console.log(JSON.stringify(Array.from(occ)),55555)
                    }
                    while (!occ.has(s.charAt(rk + 1))) {
                        // 不断地移动右指针
                        // rk + 1 < n && 
                        occ.add(s.charAt(rk + 1));
                        ++rk;
                    }
                    console.log(JSON.stringify(Array.from(occ)),'every')
                    // 第 i 到 rk 个字符是一个极长的无重复字符子串
                    // ans = Math.max(ans, rk - i + 1);
                    ansArr.push(s.substr(i,rk - i + 1))
                    console.log(JSON.stringify(Array.from(occ)),55555)
                }
                // return ans;
                return ansArr
            };
    
            console.log(lengthOfLongestSubstring("pwwkew"),'result')
  • 相关阅读:
    VC++ 进度条的使用
    VC++ 知识点
    VC++ 遍历目录
    VC++ 目录选择对话框
    VC中的树形控件
    C++文件输入输出流
    一些有用的Sql语句
    C语言 单引号和双引号的区别
    如何让自己成为一名黑客高手全集
    顶尖黑客的故事
  • 原文地址:https://www.cnblogs.com/MDGE/p/15696076.html
Copyright © 2011-2022 走看看