時間 :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 輸入...