3. 無重複字符的最長子串

#雙指針,若是遇到重複的詞,就更新起始指針
1
class Solution: 2 def lengthOfLongestSubstring(self, s): 3 """ 4 :type s: str 5 :rtype: int 6 """ 7 if len(s)<=1:return len(s) 8 aa={s[0]:0} 9 i=0 10 j=1 11 maxlen=0 12 while(j<len(s)): 13 if not s[j] in aa: 14 aa[s[j]]=j 15 else: 16 maxlen=max(maxlen,j-i)#避免abbca這種情形,i已經=2,但查表獲得aa['a']=0,由於咱們已經可以肯定0-2之間有重複 17 i=max(aa[s[j]]+1,i) 18 aa[s[j]]=j 19 j+=1 20 maxlen=max(maxlen,j-i)#最後計算一遍,計算出'abc'這種不會進入else的情形 21 return maxlen
相關文章
相關標籤/搜索