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);
}