Explain minimum window covering all chars.
01
01
Understand the problem
stringssliding-window
02
02
Attempt it yourself
Sketch your approach before reading the solution — that's what interviews test.
Stuck? AI Nudge Available
Get a conceptual hint to guide your logic without spoiling the final implementation.
03
03
Study the solution
The solution is waiting
Give it an honest attempt first — then compare your thinking with the full walkthrough.
04
04
Read the code
Expand then shrink
Run Playgroundfrom collections import Counter
def min_window(s, t):
if not t or not s:
return ""
need = Counter(t)
required = len(need)
formed = 0
window = {}
best = (float('inf'), 0, 0)
left = 0
for right, ch in enumerate(s):
window[ch] = window.get(ch, 0) + 1
if ch in need and window[ch] == need[ch]:
formed += 1
while formed == required:
if right - left + 1 < best[0]:
best = (right - left + 1, left, right)
lc = s[left]
window[lc] -= 1
if lc in need and window[lc] < need[lc]:
formed -= 1
left += 1
return "" if best[0] == float('inf') else s[best[1]:best[2] + 1]
# --- demo ---
print(min_window("ADOBECODEBANC", "ABC")) # BANC05
05
Join the discussion
Discussion (0)
Sign in to join the discussion.
No responses yet. Be the first to share what you think.