Given a string, find the length of the longest substring without repeating characters.code
任意2個重複的字符不可能同時存在於一個合法的子串中。所以,能夠從左到右掃描字符,用一個字典記錄出現過的字符。
一旦發現出現過的字符,則切分爲不一樣的子串。
跟蹤子串的最大長度便可。utf-8
時間複雜度爲 O(n)string
# coding: utf-8 class Solution: def lengthOfLongestSubstring(self, s): maxL = 0 L = 0 D = {} # 從第一個字符開始掃描一遍,同時記錄子串長度。若是遇到字符在現有子串裏已存在的,則馬上終止當前子串,開始一個新子串的計數 for c in s: if c not in D: D[c] = 1 L += 1 else: if L > maxL: maxL = L D = { c: 1 } L = 1 if L > maxL: maxL = L return maxL print Solution().lengthOfLongestSubstring('abrkaabcdefghijjxxx') # 10