力扣 0003.无重复字符的最长子串
目录
3.无重复字符的最长子串
问题
给定一个字符串
s
,请你找出其中不含有重复字符的最长子串的长度。示例1:
|
|
示例2:
|
|
示例3:
|
|
法一:滑动窗口+哈希集合判断重复
|
|
-
时间复杂度: O(N),N是字符串的长度,两个指针分别会遍历整个字符串一次。
-
空间复杂度: O(∣Σ∣),字符集这里默认为ASCII码,即[0,128),所以字符集大小为128。
-
创建一个set集合。
-
创建两个指针,i指针随着for循环遍历字符串,j指针指向字符串的开头,即滑动窗口。
-
如果set理没有s[i],说明目前为止没有重复的字符,把它添加到set里,然后更新最大不重复字符的数量,如果比之前大就更新。
-
如果set里有s[i],则从set里开始删除s[j],并且开始递增j,即把j指针右移,直到set里没有s[i]为止,添加新的s[i],开始新的一轮。
-
直到遍历完整个字符串,最后输出最大不重复字符的数量。
法二:官方答案
|
|