<awangdev>76. Minimum Window Substring_1.java
public String minWindow(String s, String t) {
        int left = 0, right = 0, start = 0, counter = t.length(); 
        int minLen = Integer.MAX_VALUE, n = s.length();
        
        int[] freq = new int[256];
        for (char c : t.toCharArray()) freq[c]++;

        while (right < n) {
            char head = s.charAt(right++);
            if (freq[head] > 0) counter--; 
            freq[head]--;

            while (counter == 0) { 
                int len = right - left;
                if (len < minLen) { 
                    minLen = len;
                    start = left;
                }
                char tail = s.charAt(left++);
                if (freq[tail] == 0) counter++; 
                freq[tail]++; 
            }
        }
        return minLen == Integer.MAX_VALUE ? "" : s.substring(start, start + minLen); 
    }
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 ( ) ;
  int [ ] var_15 = new int [ 256 ] ;
  for ( char var_17 : var_3 . toCharArray ( ) ) var_15 [ var_17 ] ++ ;
  while ( var_6 < var_13 ) {
    char var_19 = var_2 . charAt ( var_6 ++ ) ;
    if ( var_15 [ var_19 ] > 0 ) var_9 -- ;
    var_15 [ var_19 ] -- ;
    while ( var_9 == 0 ) {
      int var_20 = var_6 - var_5 ;
      if ( var_20 < var_12 ) {
        var_12 = var_20 ;
        var_7 = var_5 ;
      }
      char var_21 = var_2 . charAt ( var_5 ++ ) ;
      if ( var_15 [ var_21 ] == 0 ) var_9 ++ ;
      var_15 [ var_21 ] ++ ;
    }
  }
  return var_12 == Integer . MAX_VALUE ? "" : var_2 . substring ( var_7 , var_7 + var_12 ) ;
}
