給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。
示例 1:
輸入:"abcabcbb"輸出:3解釋:因為無重複字元的最長子串是"abc",所以其
長度為 3。
示例 2:
輸入:"bbbbb"輸出:1解釋:因為無重複字元的最長子串是"b"
,所以其長度為 1。
示例 3:
輸入:"pwwkew"輸出:3解釋:因為無重複字元的最長子串是"wke"
,所以其長度為 3。請注意,你的答案必須是子串的長度,
"pwke"
是乙個子串行,不是子串。
deflengthoflongestsubstring(s):
""":type s: str
:rtype: int
"""#
儲存歷史迴圈中最長的子串長度
max_len =0
#判斷傳入的字串是否為空
if s is none or len(s) ==0:
return
max_len
#定義乙個字典,儲存不重複的字元和字元所在的下標
str_dict ={}
#儲存每次迴圈中最長的子串長度
one_max =0
#記錄最近重複字元所在的位置+1
start =0
for i in
range(len(s)):
#判斷當前字元是否在字典中和當前字元的下標是否大於等於最近重複字元的所在位置
if s[i] in str_dict and str_dict[s[i]] >=start:
#記錄當前字元的值+1
start = str_dict[s[i]] + 1
#print start
#在此次迴圈中,最大的不重複子串的長度
one_max = i - start + 1
#把當前位置覆蓋字典中的位置
str_dict[s[i]] =i
#比較此次迴圈的最大不重複子串長度和歷史迴圈最大不重複子串長度
max_len =max(max_len, one_max)
return
max_len
print lengthoflongestsubstring('
pwwssffasdf
')
這裡的解題思路是把字串中的值當做字典的key,把他對應的索引存為字典的value。通過取出的值跟最開始計數的值進行比較找出最大值。
python 計算無重複字串
def no repeat str str 計算出字串的總長度,即迴圈的次數 length len str 存放無重複字串,把所有可能的無重複的字串都放在這裡面 result 遍歷每乙個字元 for i in range length 這個用來儲存每乙個階段的無重複的字串 tmp str i 檢視下...
無重複字串的最長字串
無重複字元的最長子串 難度中等 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3...
leetcode無重複字串
無重複字串 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew...