不含有重複字元的最長子串的長度

2021-09-26 18:28:11 字數 1399 閱讀 9898

示例 1:

輸入:"abcabcbb"輸出:3解釋:因為無重複字元的最長子串是"abc",所以其長度為 3。
示例 2:

輸入:"bbbbb"輸出:1解釋:因為無重複字元的最長子串是"b",所以其長度為 1。
示例 3:

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

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

把字串中的值當作字典中的key,索引是它的value,下乙個字元在當前字典中且索引比較靠前,則把字典中的索引進行更新,並且從這個衝突索引的下乙個位置進行。

def lengthoflongestsubstring(s):

""":type s: str

:rtype: int

"""# 儲存歷史迴圈中最長的子串長度

max_len = 0

# 判斷傳入的字串是否為空

if s is none or len(s) == 0:

return max_len

# 定義乙個字典,儲存不重複的字元和字元所在的下標

str_dict = {}

# 儲存每次迴圈中最長的子串長度

one_max = 0

# 記錄最近重複字元所在的位置+1

start = 0

for i in range(len(s)):

# 判斷當前字元是否在字典中和當前字元的下標是否大於等於最近重複字元的所在位置

if s[i] in str_dict and str_dict[s[i]] >= start:

# 記錄當前字元的值+1

start = str_dict[s[i]] + 1

# print start

# 在此次迴圈中,最大的不重複子串的長度

one_max = i - start + 1

# 把當前位置覆蓋字典中的位置

str_dict[s[i]] = i

# 比較此次迴圈的最大不重複子串長度和歷史迴圈最大不重複子串長度

max_len = max(max_len, one_max)

return max_len

不含有重複字元的 最長子串 的長度。

題目 給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。class solution object def lengthoflongestsubstring self,s type s str rtype int 儲存歷史迴圈中最長的子串長度 max len 0 判斷傳入的字串是否為空 if...

演算法 不含有重複字元的 最長子串 的長度

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

不含有重複字元的最長子串

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