力扣刷題1 無重複字元的最長字串

2021-09-06 23:26:55 字數 1393 閱讀 7439

時間 :19/1/3

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

**:示例:輸入:"abcabcbb"

輸出:3

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

他人優秀**:

class solution:

def lengthoflongestsubstring(self, s):

""":type s: str

:rtype: int

"""max_number = 0

number = 0

test = ''

for i in s: #i是s從第乙個位置的字元到最後乙個字元,每次乙個

if i not in test: #判斷i在不在test上面,不在的話 test的下乙個為i

test += i #number加一

number += 1

else:

if number >= max_number:

max_number = number

index = test.index(i)

test = test[(index+1):] + i

number = len(test)

if number > max_number:

max_number = number

return max_number

思想:通過乙個for迴圈,判斷每乙個字元是否重複,如果沒重複,number加一,如果重複,將test的**變為重複後面的**加上重複的那個。因為本題要求的是判斷是連續**不重複,而不是一共有幾個**,所以可以加上。    

max_number是最後返回的值,test是乙個字串,for迴圈的作用是讓i每次為s的乙個值,判斷是否在test,不在說明沒有重複,給test加字元,number加一,重點說else,裡面的if語句是說如果之前的number大的話就給max number賦予number的值,index函式的作用是判斷i在test的哪個位置,返回整數,是i在test的第幾個位置,下一行的意思是重新構造乙個test字串,為上述重複字元的下乙個字元,並且在字元最後加上i此時代表的字元,number代表此時test的長度。

乙個問題是test = test[(index+1):] + i 這個**,最後為什麼加上i,我試過不加i的話,例子abcabcd返回的會是3. 

解答:因為本題要求的是判斷是連續**不重複,而不是一共有幾個不同**,所以加上。

自己**:沒搞出來,以後努力。  

力扣刷題 無重複字元的最長子串(c )

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

力扣 無重複字元的最長子串

1.暴力解法 兩個for迴圈檢出所有子串,對於每乙個子串再分別用乙個函式判斷是否為重複子串,若為非重複子串,則計算出其長度,直至找到最大值。時間複雜度 o n3 每個子串的重複判斷需要 o j i 2.滑動視窗 初始值i j 0 j不斷向右滑動,只要該字串為非重複字串就不斷向右滑動,每次滑動記錄該不...

力扣 程式設計題3 無重複字元的最長子串

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