3. 無重複字元的最長子串
給定一個字串 s
,請你找出其中不含有重複字元的 最長子串 的長度。
示例 1:
輸入: s = "abcabcbb"
輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
示例 2:
輸入: s = "bbbbb"
輸出: 1
解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。
示例 3:
輸入: s = "pwwkew"
輸出: 3
解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。 請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串。
提示:
0 <= s.length <= 5 * 104
s
由英文字母、數字、符號和空格組成
寫完看了眼題解感覺我的簡單一點。。題解是找到每個位置對應的最長不重複字串,我的高效些。
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
start = end = 0
ss = []
maxLen = 0
while end < len(s):
c = s[end]
if c in ss: # 存在重複字元
maxLen = max(maxLen, len(ss))
start += ss.index(c) + 1
ss = list(s[start:end])
ss.append(c)
end += 1
maxLen = max(maxLen, len(ss))
return maxLen
(半夜睡不著起來刷題也是沒誰了。。