# 定義空列表作為滑動視窗
max_len =
0# 最大長度
count =
0# 滾動統計數
iflen
(s)==1:
# 當字串長度為1
return
1for i in
range
(len
(s))
:# 當字串長度大於1
if max_len
# 內迴圈終止的情況2:沒有碰到重複且遍歷到字串末尾,這時需要進行比較
max_len = count
ls.clear(
)# 當i指標更換時,列表清零,重新計數
count =0)
count +=
1for j in
range
(i+1
,len
(s))
:if s[j]
in ls:
# 內迴圈終止的情況2:碰到重複,這是需要進行比較
if(max_len < count)
: max_len = count
count =
0break
) count +=
1return max_len
class
solution
:def
lengthoflongestsubstring
(self, s:
str)
->
int:
# 雜湊集合,記錄每個字元是否出現過
occ =
set(
) n =
len(s)
# 右指標,初始值為 -1,相當於我們在字串的左邊界的左側,還沒有開始移動
rk, ans =-1
,0for i in
range
(n):
if i !=0:
# 左指標向右移動一格,移除乙個字元
occ.remove(s[i -1]
)while rk +
1< n and s[rk +1]
notin occ:
# 不斷地移動右指標
occ.add(s[rk +1]
) rk +=
1# 第 i 到 rk 個字元是乙個極長的無重複字元子串
ans =
max(ans, rk - i +1)
return ans
class
solution
:def
lengthoflongestsubstring
(self, s:
str)
->
int:
k, res, c_dict =-1
,0,for i, c in
enumerate
(s):
if c in c_dict and c_dict[c]
> k:
# 字元c在字典中 且 上次出現的下標大於當前長度的起始下標
k = c_dict[c]
c_dict[c]
= i else
: c_dict[c]
= i res =
max(res, i-k)
return res
003 無重複字元的最長子串
given a string,find the length of the longest substring without repeating characters.examples given abcabcbb the answer is abc which the length is 3.g...
無重複字元最長子串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...
無重複字元最長子串
題目描述 給定乙個字串,找出不含有重複字元的 最長子串 的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是子串行而不是子串 i...