題目描述
給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。
示例
示例1:
輸入: “abcabcbb”
輸出: 3
解釋: 因爲無重複字符的最長子串是 “abc”,所以其長度爲 3。
示例2:
輸入: “bbbbb”
輸出: 1
解釋: 因爲無重複字符的最長子串是 “b”,所以其長度爲 1。
示例3:
輸入: “pwwkew”
輸出: 3
解釋: 因爲無重複字符的最長子串是 “wke”,所以其長度爲 3。
請注意,你的答案必須是 子串 的長度,“pwke” 是一個子序列,不是子串。
Python3解答
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
out = r = ""
for x in s:
if x not in r:
r += x
else:
if len(out) < len(r):
out = r
r += x
m = r.index(x)
r = r[m+1:]
# 如果從頭到尾沒有出現重複字符,就需要再比較一次,因爲循環內沒有
if len(out) < len(r):
out = r
return len(out)