class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ start = 0 max_len = 0 d = {} for i, c in enumerate(s): if c in d and d[c] >= start: max_len = max(max_len, i - start) start = d[c] + 1 d[c] = i return max(max_len, len(s) - start) print(Solution.lengthOfLongestSubstring('self','asdasd'))
解释:for i, c in enumerate(s):中的i是字典中的一个下标,从0开始,c就表示在字符串s中的每一个字母,
然后递归调用,找到第二次出现的一个字母的位置减去这个字母第一次出现的位置,找到最大的相减的长度。max