類似於推箱子遊戲, 無重複字元的最長子串就是乙個大的箱子, 遍歷字串,每次取乙個字元推進去, 如果發現箱子裡面已經有了重複的字元, 就開始推舊字元出箱子, 直到箱子無與新字元重複的字元.
以字串"aab"舉列
被推出來的字元
最長無重複字元"箱子"
待處理字串
無取第乙個字元a進箱子
ab在外面
第乙個字元的a被推出來了
取第二個字元a進箱子
b在外面
第乙個字元的a被推出來了
留在箱子裡的a同時取b進箱子
無剩餘字元
class solution:
def lengthoflongestsubstring(self, s: str) -> int:
# 最長無重複字串的"箱子"
st = ''
# 最大長度
m = 0
for i in s:
if i not in st:
st += i
else:
# 將舊的推出箱子, 同時儲存前一次無重複的長度
m = max(m, len(st))
if len(st) != 1:
st = st[st.find(i) + 1:] + i
return max(m, len(st))
執行速度太慢了, 佔記憶體過多, 有待改進
類似於推箱子遊戲, 無重複字元的最長子串就是乙個大的箱子, 遍歷字串,每次取乙個字元推進去, 如果發現箱子裡面已經有了重複的字元, 就開始推舊字元出箱子, 直到箱子無與新字元重複的字元.
以字串"aab"舉列
被推出來的字元
最長無重複字元"箱子"
待處理字串
無取第乙個字元a進箱子
ab在外面
第乙個字元的a被推出來了
取第二個字元a進箱子
b在外面
第乙個字元的a被推出來了
留在箱子裡的a同時取b進箱子
無剩餘字元
class solution:
def lengthoflongestsubstring(self, s: str) -> int:
# 最長無重複字串的"箱子"
st = ''
# 最大長度
m = 0
for i in s:
if i not in st:
st += i
else:
# 將舊的推出箱子, 同時儲存前一次無重複的長度
m = max(m, len(st))
if len(st) != 1:
st = st[st.find(i) + 1:] + i
return max(m, len(st))
執行速度太慢了, 佔記憶體過多, 有待改進 無重複字元最長子串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...
無重複字元最長子串
題目描述 給定乙個字串,找出不含有重複字元的 最長子串 的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是子串行而不是子串 i...
無重複字元的最長子串
給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。int le...