76. Minimum Window Substring ๐
Last updated
Was this helpful?
Last updated
Was this helpful?
Difficulty: Hard
- Tags: String
, Sliding Window
, Hash Table
Given two strings s
and t
, return the minimum window substring of s
such that every character in t
(including duplicates) is included in the window. If no such substring exists, return the empty string ""
.
๐น Example 1:
Input:
Output:
Explanation: The substring "BANC" is the smallest window in s
that contains all the characters of t
.
๐น Example 2:
Input:
Output:
Explanation: The entire string s
is the minimum window.
๐น Example 3:
Input:
Output:
Explanation: Both 'a's from t
must be included in the window. Since s
only has one 'a', there is no valid substring.
1 <= m, n <= 10^5
where m
is the length of s
and n
is the length of t
.
s
and t
consist of uppercase and lowercase English letters.
๐ค Follow-up: Could you solve the problem in O(m + n)
time?
To solve this problem efficiently, we use the Sliding Window technique with two pointers and a frequency counter:
Count Frequencies:
Use a hash map to count the frequency of characters in t
.
Sliding Window:
Expand the window by moving the right pointer until all characters in t
are included in the current window.
Shrink the window from the left while maintaining the validity of the window, and update the result if the current window is smaller.
Track Validity:
Use a counter to track how many unique characters from t
have been fully matched in the current window.
Return Result:
If no valid window is found, return ""
. Otherwise, return the smallest valid window.
O(m + n):
Traversing the string s
takes O(m)
.
Updating the frequency hash maps and shrinking the window is linear relative to the size of s
and t
.
O(n):
Hash maps are used to store the frequencies of characters in t
and the sliding window.
You can find the full solution .