Minimum Window Substring

Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).

  • Time: O(n)
  • Space: O(1)
public String minWindow(String s, String t) {
    int[] count = new int[256];
    for (int i = 0; i < t.length(); i++)
        count[t.charAt(i)]++;
    int start = 0, end = 0, counter = t.length();
    int minStart = -1, minEnd = s.length();
    while (end < s.length()) {
        if (count[s.charAt(end)] > 0)
            counter--;
        count[s.charAt(end)]--;
        end++;
        while (counter == 0) {
            if (end - start < minEnd - minStart) {
                minStart = start;
                minEnd = end;
            }
            count[s.charAt(start)]++;
            if (count[s.charAt(start)] > 0) {
                counter++;
            }
            start++;
        }
    }
    return minStart == -1 ? "" : s.substring(minStart, minEnd);
}

results matching ""

    No results matching ""