外媒分享採訪:TheShy在轉會期為何會和Rookie分道揚鑣?背後的故事另人可惜!
阿新 • 來源:網路 • 發佈:2022-04-06
無重複字元的最長子串
題目地址
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
描述
給定一個字串,請你找出其中不含有重複字元的 最長子串 的長度。
樣例
示例 1:
輸入: "abcabcbb"
輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
示例 2:
輸入: "bbbbb"
輸出: 1
解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。
示例 3:
輸入: "pwwkew"
輸出: 3
解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。
請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串。
題解-暴力法
class Solution:
max_length = 1
def lengthOfLongestSubstring(self, s: str) -> int:
if not s:
return 0
for index in range(len(s)):
curr = index + 1
while curr < len(s) and s[curr] not in s[index: curr]:
curr += 1
if curr - index > self.max_length:
self.max_length = curr - index
return self.max_length
題解-滑動視窗
class Solution:
max_length = 1
def lengthOfLongestSubstring(self, s: str) -> int:
if not s:
return 0
left, right = 0, 0
visited = set([])
while right < len(s):
if s[right] not in visited:
visited.add(s[right])
right += 1
if len(visited) > self.max_length:
self.max_length = len(visited)
else:
visited.remove(s[left])
left += 1
return self.max_length
