Can you solve this real interview question? Minimum Window Substring - Given two strings s and t of lengths m and n respectively, return the minimum window substring of s such that every character in t (including duplicates) is included in the window. If there is no such substring, return the empty string "".
The testcases will be generated such that the answer is unique.
Example 1:
Input: s = "ADOBECODEBANC", t = "ABC" Output: "BANC" Explanation: The minimum window substring "BANC" includes 'A', 'B', and 'C' from string t.
Example 2:
Input: s = "a", t = "a" Output: "a" Explanation: The entire string s is the minimum window.
Example 3:
Input: s = "a", t = "aa" Output: "" Explanation: Both 'a's from t must be included in the window. Since the largest window of s only has one 'a', return empty string.
class Solution:
def minWindow(self, s: str, t: str) -> str:
if not s or not t or len(s) < len(t):
return ""
map = [0] * 128
count = len(t)
start = 0
end = 0
min_len = float('inf')
start_index = 0
# UPVOTE !
for char in t:
map[ord(char)] += 1
while end < len(s):
if map[ord(s[end])] > 0:
count -= 1
map[ord(s[end])] -= 1
end += 1
while count == 0:
if end - start < min_len:
start_index = start
min_len = end - start
if map[ord(s[start])] == 0:
count += 1
map[ord(s[start])] += 1
start += 1
return "" if min_len == float('inf') else s[start_index:start_index + min_len]