【leetcodeブラシ問題】3.重複文字のない長男列(スライドウィンドウ法)シリーズまとめ
1487 ワード
3.重複文字のない長男列(Medium)
文字列を指定すると、重複文字が含まれていない長男の列の長さを見つけてください.
参照リンク:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/hua-dong-chuang-kou-by-powcai/
文字列を指定すると、重複文字が含まれていない長男の列の長さを見つけてください.
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
# :
# s , 0; 1, 1。
if s == "": return 0
if len(s) == 1: return 1
left = 0
lookup = set()
max_len, cur_len =0, 0
for i in range(len(s)):
cur_len += 1
while s[i] in lookup:
lookup.remove(s[left])
left += 1
cur_len -= 1
max_len = max(max_len, cur_len)
lookup.add(s[i])
return max_len
# : + ( )
# length, j = 0, -1
# for i,x in enumerate(s):
# if x in s[j+1:i]:
# length = max(length, i-j-1)
# j = s[j+1:i].index(x)+j+1
# return max(length, len(s)-1-j)
# :
# if s == "": return 0
# if len(s) == 1: return 1
# def find_left(s, i):
# tmp_str = s[i]
# j = i - 1
# while j >= 0 and s[j] not in tmp_str:
# tmp_str += s[j]
# j -= 1
# return len(tmp_str)
# length = 0
# for i in range(0, len(s)):
# length = max(length, find_left(s, i))
# return length
参照リンク:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/hua-dong-chuang-kou-by-powcai/