public String minWindow(String s, String t) {
        int[] res = new int[256];
        for (char c : t.toCharArray()) res[c]++;

        int total = t.length();
        int start = 0;
        int min = Integer.MAX_VALUE;
        for (int i = 0, k = 0; i < s.length(); i++) {
            if (res[s.charAt(i)]-- > 0) total--;
            while (total == 0) {
                if (min > i - k + 1) {
                    min = i - k +1;
                    start = k;
                }
                if (res[s.charAt(k++)]++ == 0) total++;
 // Make string invaild
            }
        }
        return min == Integer.MAX_VALUE ? "" : s.substring(start, start + min);
    }

results matching ""

    No results matching ""