LeetCode3 无重复字符串的最长子串

思路:

        1.创建一个set

        2.创建两个指针i和j,第一个指针i随循环遍历字符串,第二个指针j指向字符串第一个元素

        3.如果set结构里面没有string[i]那么将其添加到set里并更新maxLength的值

        4.如果set里面有string[i],则从set里面删除string[j]并且递增j,再检查set里面是否有string[i],如此往复知道set里面没有string[i]为止

        5.重复3,4直到遍历完字符串

        6.返回maxLength

// sliding window划窗算法
      const lengthOfLongestSubstring = string => {
        const set = new Set();
        let i = 0,
          j = 0,
          maxLength = 0;
        if (string.length === 0) return 0;
        for (i; i < string.length; i++) {
          if (!set.has(string[i])) {
            set.add(string[i]);
            maxLength = Math.max(maxLength, set.size);
          } else {
            while (set.has(string[i])) {
              set.delete(string[j]);
              j++;
            }
            set.add(string[i]);
          }
        }
        return maxLength;
      };
      const s = 'abcabcbb';
      console.log(lengthOfLongestSubstring(s));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值