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

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。

示例 1:     输入: s = "abcabcbb"     输出: 3
解释: 因为无重复字符的最长子串是"abc",所以其长度为 3

示例 2:     输入: s = "bbbbb"     输出: 1
解释: 因为无重复字符的最长子串是"b",所以其长度为 1

滑动窗口

思路:枚举左端点,尽可能地扩展右端点,当出现重复字符导致区间不合法时,缩减左端点直到区间合法。时间复杂度:O(n)

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int n=s.length();//字符串长度
        int l=0;//左指针
        int ret=0;//滑动窗口最大值
        unordered_map<char,int> count;存储字符出现次数的哈希表,使用map也可以
        for(int r=0;r<n;r++){
            count[s[r]]++;//右指针向右移动,对应字符计数器+1
            while(count[s[r]]>=2){//当前所指的字符出现次数大于1次
                count[s[l++]]--;//左指针右移,对应字符计数器-1,直到将刚才重复的字符滑出窗口
            }
            ret=max(ret,r-l+1);//若此时滑动窗口值为最大,更新ret
        }
        return ret;
    }
};

相关推荐

  1. -3. 重复字符长子

    2024-06-08 01:46:04       17 阅读
  2. 3. 重复字符长子

    2024-06-08 01:46:04       8 阅读
  3. 热题100_滑动窗口_3_重复字符长子

    2024-06-08 01:46:04       31 阅读
  4. [ Hot100]Day8 重复字符长子

    2024-06-08 01:46:04       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 01:46:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 01:46:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 01:46:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 01:46:04       18 阅读

热门阅读

  1. SQL注入二次注入

    2024-06-08 01:46:04       7 阅读
  2. C# as运算符

    2024-06-08 01:46:04       10 阅读
  3. 【vuejs】$nextTick的原理分析和使用场景

    2024-06-08 01:46:04       9 阅读
  4. 动态SLAM:ORB-SLAM2+YOLOv8

    2024-06-08 01:46:04       10 阅读
  5. DOS编程入门:探索基础、深入技巧与实战应用

    2024-06-08 01:46:04       11 阅读
  6. 8招让Python代码更优雅

    2024-06-08 01:46:04       7 阅读
  7. 采购管理软件怎么选才不踩坑?收下这14 步清单

    2024-06-08 01:46:04       8 阅读