3.无重复字符的最长子串-python
3.无重复字符的最长子串(中等)
题目大意:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度
题目
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
示例1:
1 |
|
示例2:
1 |
|
示例3:
1 |
|
示例4:
1 |
|
提示:
- 0 <= s.length <= 5 * 104
- s 由英文字母、数字、符号和空格组成
分析和解答
这个题要及时get到使用滑动窗口来解决这个问题,因为题目要求的是”子串“,这是一个连续的
在get到是用滑动窗口解决问题后,滑动窗口本身来讲感觉就是一个队列,这个题是变长的
整体上的思路是:
遍历字符串,如果遇到不在滑动窗口(队列)中的字符,就加入队列的右边。如果遇到出现在队列中的字符,则队列的左边要缩到这个字符出现的下一位(感觉也可以用find(xxx) + 1
来优化),然后再把这个字符加入进去;
在每次遍历i的时候,判断当前变长滑动窗口的大小和当前的最大值,来更新最大值,用来最终返回
解题:
1 |
|
3.无重复字符的最长子串-python
http://example.com/2021/11/30/algorithms/leetcode-python/3-无重复字符的最长子串-python/