003 無重複字元的最長子串

2022-04-05 01:55:51 字數 1497 閱讀 3888

given a string, find the length of the longest substring without repeating characters.

examples:

given "abcabcbb", the answer is "abc", which the length is 3.

given "bbbbb", the answer is "b", with the length of 1.

given "pwwkew", the answer is "wke", with the length of 3. note that the answer must be a substring, "pwke" is a subsequence and not a substring.

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

示例:給定 "abcabcbb" ,沒有重複字元的最長子串是 "abc" ,那麼長度就是3。

給定 "bbbbb" ,最長的子串就是 "b" ,長度是1。

給定 "pwwkew" ,最長子串是 "wke" ,長度是3。請注意答案必須是乙個子串,"pwke" 是 子串行  而不是子串

思路:準備乙個dict來儲存每個字母最新的位置,出現重複的則記錄下該字母的

通俗版

class solution(object):

def lengthoflongestsubstring(self,s):

temp = res = ''

for item in s:

if item not in temp:

temp += item

if len(temp) > len(res):

res = temp

else:

i = temp.index(item) # 找到該資料對應的索引

if i == len(temp) - 1: # 如果找到尾部了

temp = item # 重新複製temp

else:

temp = temp[i + 1:] + item

return len(res)

下面是最簡潔版的

def lengthoflongestsubstring(s):

d = {}

start = 0

ans = 0

for i,c in enumerate(s):

if c in d:

start = max(start,d[c] + 1) # abba

d[c] = i

ans = max(ans,i - start + 1)

return ans

print(lengthoflongestsubstring('pwwkew'))

003 無重複字元的最長子串

定義空列表作為滑動視窗 max len 0 最大長度 count 0 滾動統計數 iflen s 1 當字串長度為1 return 1for i in range len s 當字串長度大於1 if max len 內迴圈終止的情況2 沒有碰到重複且遍歷到字串末尾,這時需要進行比較 max len ...

無重複字元最長子串

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

無重複字元最長子串

題目描述 給定乙個字串,找出不含有重複字元的 最長子串 的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是子串行而不是子串 i...