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 subsequence and not a substring.
求连续不重复最大子串长度。
思路:这里要管理一个dict(Hash),初始化一个start=0,当dict中存在当前字母时,更新字母的value,并更新start。
这里有个小坑:如abba这种,因为后一个a跟前一个a差3个长度,但中间已经有重复,所以要加限制条件start<=usedChar[s[i]]
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
dict = {}
length = start = 0
for i in range(len(s)):
if s[i] in dict and start <= dict[s[i]]:
start = dict[s[i]]+1
else:
length = max(length, i-start+1)
dict[s[i]] = i
return length