给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
1. 思路![在这里插入图片描述](https://img-blog.csdnimg.cn/20210228151806642.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ0MTEzMQ==,size_16,color_FFFFFF,t_70)
2. 代码
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
if len(s) == 0:return 0
if len(s) == 1:return 1
m = len(s)
hashset = set()
ans = 0
right = 0 # 右指针初始化为0
for i in range(m):
# i为左指针,每次操作向右移一格
if i!= 0:
hashset.remove(s[i-1])
# 操作右指针
while right < m and s[right] not in hashset:
hashset.add(s[left])
right += 1
# 此时left值为while循环中不合法的,所以不用right - i + 1
ans = max(ans,right - i)
return ans