76. Minimum Window Substring
class Solution:
def minWindow(self, s: str, t: str) -> str:
target = Counter(list(t))
memo = defaultdict(int)
left = 0
right = 0
valid = 0
start = 0
L = float('inf')
while right < len(s):
char = s[right]
right += 1
if char in target:
memo[char] += 1
if memo[char] == target[char]:
valid += 1
while valid == len(target):
if right - left < L:
start = left
L = right - left
remove = s[left]
left += 1
if remove in target:
if memo[remove] == target[remove]:
valid -= 1
memo[remove] -= 1
return '' if L == float('inf') else s[start:start+L]Last updated