题目描述:
思路:
使用left和right表示子串的端点。每次判断新的right是否在之前的子串里,如果在,则将left更新为新字符在子串里的位置(因为在此之间,没有更长的子串了)。如果不在则right+1,并更新ans。
代码:
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
l=len(s)
if l==0:
return 0
left,right=0,1
ans=1
while right<l:
if s[right] in s[left:right]:#s[right]在字串里
left=s[left:right+1].find(s[right])+1+left#到下一个s[right]字符的位置
right+=1
else:#s[right]不在字串里
right+=1
ans=max(right-left,ans)
return ans