Given strings s and t, return the minimum window substring in s that contains all characters of t (including duplicates).
This is the classic variable-size sliding window hard problem:
Use a counter for needed characters and a have/need comparison. Time: O(n).
min_window('ADOBECODEBANC', 'ABC')
BANC