首先注意到是最長子串 而不是最長子序列。
可以使用滑動視窗,i和j分別指向視窗的兩端。使用 乙個字典去記錄視窗內的值。
如果當前的字元是已經出現過的,那麼左邊界必須往右移,移動到剛剛沒過當前字元的位置。如果當前字元沒有出現過,那麼移動右邊界把這個字元劃分到視窗內。每次視窗變化,和最大視窗長度進行比較,並把最大值賦值給最大視窗長度。
class
solution
(object):
deflengthoflongestsubstring
(self, s)
:"""
:type s: str
:rtype: int
"""max_len =
0 max_set =
set(
) i =
0 j =
0while i<
len(s)
and j<
len(s)
:if s[i]
notin max_set:
max_set.add(s[i]
) i+=
1 max_len =
max(max_len,i-j)
else
:while s[j]
!=s[i]
: max_set.remove(s[j]
) j+=
1 max_set.remove(s[j]
) j+=
1 max_set.add(s[i]
) i+=
1 max_len =
max(max_len,i-j)
return max_len
leetcode 3 無重複的字串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...
leetcode 3 無重複字元的最長字元子串
堅持打卡!題目 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwk...
leetcode 3 最長無重複字串
3.longest substring without repeating characters 題面 given a string,find the length of the longest substring without repeating characters.給定字串,找到最長無重複字...