LeetCode刷題 3 無重複字元的最長子串

2021-10-20 15:25:09 字數 1504 閱讀 4734

也是通過滑動視窗的思路,固定左端,移動右端;再移動左端。

class

solution

(object):

deflengthoflongestsubstring

(self, s)

:"""

:type s: str

:rtype: int

"""size =

len(s)

l,r =0,

-1# [l,r]子串

longest =

0 cur =

# 當前子串

while l < size:

if r+

1< size and s[r+1]

notin cur:1]

) r +=

1else

:# 有重複字母或右端達到末尾

cur.pop(0)

# 左端右移一位,繼續嘗試

雖然accept,但是耗時有點久,回顧下**,發現問題出現了判斷是否有重複元素那裡。

這裡可以用集合來優化,除了集合的方式。還有一種位圖(bitmap,程式設計珠璣)的思路。

class

solution

(object):

deflengthoflongestsubstring

(self, s)

:"""

:type s: str

:rtype: int

"""size =

len(s)

l,r =0,

-1# [l,r]子串

bitmap =[0

]*256# ascii碼 ,如果bitmap[5] = 1,說明ascii碼為5的元素已經在集合中。

longest =

0while l < size:

if r+

1< size and bitmap[

ord(s[r+1]

)]==0

: bitmap[

ord(s[r+1]

)]=1

r +=

1else

:# 有重複字母或右端達到末尾

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 輸入 pwwkew 輸出 3 ...

LeetCode 刷題 3 無重複最長子串

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