minimum-window-substring py3 brute force
This commit is contained in:
42
0076_minimum-window-substring/python3/brute_force_tle.py
Normal file
42
0076_minimum-window-substring/python3/brute_force_tle.py
Normal file
@@ -0,0 +1,42 @@
|
||||
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
|
||||
0
0076_minimum-window-substring/python3/solution.py
Normal file
0
0076_minimum-window-substring/python3/solution.py
Normal file
Reference in New Issue
Block a user