無重複字元的最長子串

2022-08-01 14:39:10 字數 1146 閱讀 5305

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。

示例 1:

輸入: "abcabcbb"

輸出: 3

解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。

示例 2:

輸入: "bbbbb"

輸出: 1

解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。

示例 3:

輸入: "pwwkew"

輸出: 3

解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。

請注意,你的答案必須是 子串 的長度,"pwke" 是乙個子串行,不是子串。

方法:滑動視窗

建立乙個陣列hash_作為滑動視窗,用來建立字元和字元出現位置的對映。

用兩個指標start,i來記錄滑動視窗的起始位置

向右側滑動指標 i,如果它不在 hash中,我們會繼續滑動i。直到 s[j] 已經存在於 hash_ 中。如果是s[j]存在於hash_

中,把開始的指標調整為s[j]在hash_中位置對映加一。

我們找到的沒有重複字元的最長子字串將會以指標start開頭。

class

solution(object):

deflengthoflongestsubstring(self, s):

""":type s: str

:rtype: int

"""start = max_len =0

hash_ ={}

for i in

range(len(s)):

if s[i] in hash_ and start <=hash_[s[i]]:

start = hash_[s[i]] + 1

else

: max_len = max(max_len,i-start + 1)

hash_[s[i]] =i

return max_len

無重複字元最長子串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...

無重複字元最長子串

題目描述 給定乙個字串,找出不含有重複字元的 最長子串 的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是子串行而不是子串 i...

無重複字元的最長子串

給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。int le...