2
pub fn min_window(s: String, t: String) -> String {3
let mut state = [0 as isize; (b'z' - b'A' + 1) as usize];4
let mut target = [0 as isize; (b'z' - b'A' + 1) as usize];6
target[(b - b'A') as usize] += 1;10
let string = s.as_bytes();12
let mut best_from = 0;18
let chars_expected = target.iter().filter(|&&ch| ch > 0).count();19
let mut chars_found = 0;21
while to < string.len() {22
let ch = (string[to] - b'A') as usize;24
if state[ch] + 1 == target[ch] {30
if chars_found == chars_expected {31
let mut fch = (string[from] - b'A') as usize;32
while target[fch] == 0 || state[fch] > target[fch] {38
fch = (string[from] - b'A') as usize;41
if to - from < best_to - best_from || best_to == 0 {50
s[best_from..best_to].to_string()