給定乙個字串,找出不含有重複字元的最長子串的長度。
輸入: "abcabcbb"
輸出: 3
解釋: 無重複字元的最長子串是 "abc",其長度為 3。
示例 2:
輸入: "bbbbb"
輸出: 1
解釋: 無重複字元的最長子串是 "b",其長度為 1。
示例 3:
輸入: "pwwkew"
輸出: 3
解釋: 無重複字元的最長子串是 "wke",其長度為 3。
請注意,答案必須是乙個子串,"pwke" 是乙個子串行 而不是子串。
解法:
迴圈字串,每次迴圈通過計算到最近的無重複的字串距離得到當前值往回所能達到的最大長度。每次迴圈檢視當前值的最大長度是否是目前的最大長度。
示例
class
solution
(object):
deflengthoflongestsubstring
(self, s)
:"""
:type s: str
:rtype: int
"""# d =
# 當前無重複字串長度
length =
0# 最大無重複字串長度
max_length =
0# 最近的無重複的字串索引
star =
0for i in
range
(len
(s))
:# 判斷當前值是否重複,且重複位置是否在最近無重複字串左邊
if s[i]
in d and d[s[i]
]>= star:
star = d[s[i]]+
1# 當前長度
length = i - star +
1 d[s[i]
]= i
max_length =
max(max_length, length)
return max_length
執行結果
無重複字元最長子串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...
無重複字元最長子串
題目描述 給定乙個字串,找出不含有重複字元的 最長子串 的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是子串行而不是子串 i...
Leetcode 03 無重複字元的最長子串
中等題 給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。自己在那兒想了半天,定義了left和right兩個指標,每次右邊界右移得到新的字元,檢查前面有沒有重複的,如果有就直接將左邊界移至重複字元後面乙個,因為每一步都確保了前面的字串沒有重複字元,因此只要考慮新加入的即可,邏輯上應該沒啥問題...