<awangdev>76. Minimum Window Substring_2.java
public String minWindow(String s, String t) {
        int end = 0, start = 0, head = 0, counter = t.length(); 
        int minLength = Integer.MAX_VALUE, n = s.length();
        String rst = "";

        int[] map = new int[256];
        for (char c : t.toCharArray()) map[c]++;

        while (end < n) {
            if (map[s.charAt(end++)]-- > 0) counter--;  
            
            while (counter == 0) { 
                int len = end - start;
                if (len < minLength) { 
                    minLength = len;
                    head = start;
                }
                if (map[s.charAt(start++)]++ == 0) counter++; 
            }
        }
        return minLength == Integer.MAX_VALUE ? "" : s.substring(head, head + minLength);
    }
public String var_0 ( String var_2 , String var_3 ) {
  int var_5 = 0 , var_6 = 0 , var_7 = 0 , var_9 = var_3 . length ( ) ;
  int var_12 = Integer . MAX_VALUE , var_13 = var_2 . length ( ) ;
  String var_15 = "" ;
  int [ ] var_17 = new int [ 256 ] ;
  for ( char var_19 : var_3 . toCharArray ( ) ) var_17 [ var_19 ] ++ ;
  while ( var_5 < var_13 ) {
    if ( var_17 [ var_2 . charAt ( var_5 ++ ) ] -- > 0 ) var_9 -- ;
    while ( var_9 == 0 ) {
      int var_21 = var_5 - var_6 ;
      if ( var_21 < var_12 ) {
        var_12 = var_21 ;
        var_7 = var_6 ;
      }
      if ( var_17 [ var_2 . charAt ( var_6 ++ ) ] ++ == 0 ) var_9 ++ ;
    }
  }
  return var_12 == Integer . MAX_VALUE ? "" : var_2 . substring ( var_7 , var_7 + var_12 ) ;
}
