1.Description
Given a string, find the length of the longest substring without repeating characters.
Examples:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, the answer is "b"
, with the length of 1.
Given "pwwkew"
, the answer is "wke"
, with the length of 3. Note that the answer must be a substring, "pwke"
is a subsequenceand not a substring.
2.Anayasis
用字典记录出现过的字符即它们对应的下标,用一个变量index来记录最长子串的起始下标,用另一个变量length来记录最长子串的长度。当出现重复的字符时,如果index在重复字符的下标之前,则更新index,否则不更新(因为此时子串和那个字符无关),再比较新的子串长度。
3.Code
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
used={}
index=length=0
for i in range(0,len(s)):
if used.get(s[i]) != None:
if index<used[s[i]]+1:
index=used[s[i]]+1
used[s[i]]=i
if i-index+1>length:
length=i-index+1
return length