找到字串的最長無重複字元子串

2021-10-02 05:28:07 字數 1233 閱讀 4246

給定乙個字串s,返回s的最長無重複字元子串的長度。例如

記錄每個字元前一次出現的位置positios,及到當前字元滿足不重複子串的前乙個位置prev,遍歷字串過程,遍歷到位置i,字元為c,positions[c]為前乙個c出現的位置記為prev_c,用prev_c跟prev比較,如果大於prev,則更新prev,表示滿足條件的位置右移了。乙個滿足條件的子串為prev->i。如:

s = 『abbacda

遍歷到s[5]時,prev為s[2],滿足條件的子串為』bacd』,到s[6]時,字元為』a』,需要更新prev為s[3],因為之前的prev已不符合條件。

def

max_unique_length

(s):

if s is

none

orlen

(s)==0:

return

0 positions =

pre =-1

ans =

0for i, c in

enumerate

(s):

pre =

max(pre, positions.get(c,-1

))ans =

max(ans, i - pre)

positions[c]

= i return ans

def

test_max_unique_length()

:assert

(max_unique_length(

'abcd')==

4)assert

(max_unique_length(

'aabcb')==

3)assert

(max_unique_length(

'aaaaa')==

1)assert

(max_unique_length(

'aabaa')==

2)assert

(max_unique_length(

'acbbda')==

3)print

('done'

)if __name__ ==

'__main__'

: test_max_unique_length(

)

牛客網-給定乙個陣列arr,返回arr的最長無的重複子串的長度

找到字串的最長無重複字元子串

題目 給定乙個字串str,返回str中最長無重複字元子串的長度。舉例 str abcd 返回4。str aabcb 返回3。基本思路 如果str的長度為n,字元的編碼範圍為m,本題可以做到時間複雜度為o n 空間複雜度o m 具體方法如下 在遍歷str之前,先申請幾個變數。雜湊表map,key表示某...

找到字串的最長無重複字元子串

找到字串的最長無重複字元子串 給定乙個陣列arr,返回arr的最長無的重複子串的長度 無重複指的是所有字母都不相同 輸入描述 輸入包含兩行,第一行包含乙個整數n 1 n 1 05 n 1 leq n leq 10 5 n 1 n 105 代表陣列arr的長度,第二行包含n個整數,代表陣列arr 1 ...

字串問題 找到字串的最長無重複字元子串

題目 給定乙個字串str,返回str中最長無重複字元子串的長度。舉例 str abcd 返回4。str aabcb 返回3。基本思路 如果str的長度為n,字元的編碼範圍為m,本題可以做到時間複雜度為o n 空間複雜度o m 具體方法如下 在遍歷str之前,先申請幾個變數。雜湊表map,key表示某...