Problem: 3. 无重复字符的最长子串
文章目录
- 思路
- 解题方法
- 复杂度
- Code
思路
不定长滑动窗口
解题方法
- 定义两个指针l = 0, r = 0
- 使用哈希表dic记录窗口中元素的个数,r往前移动,当r指针指向的元素个数>1的时候,则移动l指针,r指针指向的元素个数不>1
复杂度
时间复杂度:
空间复杂度:
Code
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
l = 0
r = 0
dic = {}
ans = 0
while r < len(s):
if s[r] not in dic:
dic[s[r]] = 1
else:
dic[s[r]] += 1
while dic[s[r]] > 1:
dic[s[l]] -= 1
l += 1
ans = max(ans, r - l + 1)
r += 1
return ans