21xrx.com
2024-11-23 15:39:23 Saturday
登录
文章检索 我的文章 写文章
解题思路
2023-06-08 17:41:27 深夜i     --     --

本题可以使用滑动窗口思想来解决,滑动窗口是一种双指针维护的,可以将两个嵌套的循环优化为一层循环的算法,其实现流程如下:

1. 定义左右指针 left 和 right,用于维护一个滑动窗口,用来遍历整个字符串;

2. 定义一个 unordered_set 字符集,用于记录滑动窗口中的字符是否重复;

3. 当右指针指向的字符在字符集中出现过,说明出现了重复字符,则移动左指针,直到滑动窗口内没有重复字符;

4. 每次移动左右指针时,都需要更新滑动窗口内的最大长度。

5. 最终返回滑动窗口内的最大长度。

C++ 代码实现

代码说明:

1. 使用 left 和 right 两个指针维护滑动窗口;

2. 定义一个 unordered_set 集合记录滑动窗口内的字符;

3. 当 right 指针指向的字符在集合中已经存在,则不停将 left 指针向右移动,将相应的字符从集合中删除,直到集合中不包含 right 指针指向的字符;

4. 每次移动左右指针时,都需要更新记录滑动窗口长度的 maxLen 变量。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复