python求解不含重複字元的最長子串

2021-10-08 03:08:44 字數 935 閱讀 1520

解題思路:該題類似於乘積最大,加和最大的連續陣列,本題也使用於連續並且也使用滑動視窗來做,滑動視窗做法是維護兩個指標,i和j,它們什麼時候增加視窗,什麼時候打破視窗。

法一,使用while迴圈。

def

lengthlongestsubstring

(s):

#使用set來放入不重複的子串

usedchar =

set(

) maxlength =

0#維護兩個指標,打破和擴大視窗

i=0j=o

while

(i:if s[j]

notin usedchar:

) maxlength =

max(maxlength,j-i)

else

: usedchar.remove(s[i]

) i+=

1return maxlength

法二:使用for迴圈

def

lengthlongestsubstring

(s):

#維護乙個字典

usedset =

#使用j來維護打破視窗

j=0

maxlenth =

0#使用i來不斷的擴大視窗

for i in

range

(len

(s))

:#先判斷在不在字典中,然後在新增

if s[i]

notin usedset:

maxlength =

max(maxlenth,i-j)

#將該元素新增到字典裡面

else

: j +=

1#元素新增到字典中

usedset[s[i]

]=i

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

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

不含重複字元的最長子串

問題描述 給定乙個字串,找到最長的不含重複字元子串。例如,abcabccc 最長不含重複字元的子串為 abc 長度為3。對於 bbbbb 最長的子串為 b 長度為1。解決思路 滑動視窗 維護乙個不包含重複字元 視窗 從左到右掃瞄字串,每當加乙個新字元時,檢查該字元是否存在於 視窗 中,如果不存在則將...

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

題目 輸入乙個字串,找出字串中最長的不含重複字元的子字串,計算該子字串的長度。假設字串中的字元為 a z 例如 arabcacfr 最長的字串為 rabc 和 acfr 長度為 4 int find max len string str else dp str i a i return max le...