leetcode/0076_minimum-window-substring/python3/brute_force_tle.py

43 lines
1.6 KiB
Python

from collections import Counter
class Solution:
def minWindow(self, s: str, t: str) -> str:
tcounts = Counter(t)
# If chars of t is not included in the entire
# s string, then we can just return right away
if not tcounts <= Counter(s):
return ""
tlen = len(t)
min_window = ""
for start in range(len(s)):
end = start + tlen - 1
# We can all the substrings starting from `start` which is every
# letter of s
while end < len(s):
curr_window = s[start:end + 1]
curr_window_counts = Counter(curr_window)
# <= is overloaded for Counters to mean inclusion
#
# i.e, counter_a -is-included-in- counter_b
#
if tcounts <= curr_window_counts:
# If no min_window has been computed yet or if current
# window is shorter, then we assign that as the new
# min_window
if min_window == "" or len(curr_window) < len(min_window):
min_window = curr_window
# Since at this point, if we keep iterating in the inner loop,
# we'll only get longer substrings so we just break and proceed
# to find the substrings starting from the next letter (start + 1)
break
end += 1
return min_window