Leetcode 3 無重複字元的最長子串

2021-10-04 02:38:34 字數 1498 閱讀 1509

leetcode 3. 無重複字元的最長子串

難度:中等

給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。

示例 1:

輸入: 「abcabcbb」

輸出: 3

解釋: 因為無重複字元的最長子串是 「abc」,所以其長度為 3。

普通:

思路:維護乙個列表tmp,遍歷s判斷當前i是否在tmp中,若在,則找到i在tmp對應的index,並刪除index以及之前的tmp取值。

class

solution

:def

lengthoflongestsubstring

(self, s:

str)

->

int:

tmp =

c =0for i in s:

if i in tmp:

c =max(

[len

(tmp)

,c])

if tmp[-1

]==i:

tmp =

[i]else

: tmp = tmp[tmp.index(i)+1

:]else

:return

max(

[len

(tmp)

,c])

hashmap:

思路:構建雙指標,hashmap。①當前值在hashmap中。開始指標大於hashmap中的index時需要更新hashmap中的index為當前位置;否則開始的位置需要在歷史位置的基礎上向後移動一位。②每次迴圈需要更新結束指標hashmap與最大子串長度。

class

solution

:def

lengthoflongestsubstring

(self, s:

str)

->

int:

s =list

(s) hashmap =

start, end =0,

0 maxlen =

0for i,j in

enumerate

(s):

if j in hashmap:

if start>hashmap[j]

: hashmap[j]

= i else

: start = hashmap[j]+1

end +=

1 hashmap[j]

= i maxlen =

max(

[maxlen, end-start]

)return maxlen

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 輸入 pwwk...

leetcode 3 最長無重複字串

3.longest substring without repeating characters 題面 given a string,find the length of the longest substring without repeating characters.給定字串,找到最長無重複字...