struct Solution; impl Solution { pub fn find_anagrams(s: String, p: String) -> Vec { if s.len() < p.len() { return vec![]; } let mut res = vec![]; let mut p_count = [0; 26]; let mut s_count = [0; 26]; for i in 0..p.len() { p_count[(p.as_bytes()[i] - b'a') as usize] += 1; } for i in 0..p.len() { s_count[(s.as_bytes()[i] - b'a') as usize] += 1; } for i in p.len()..s.len() { if p_count == s_count { res.push((i - p.len()) as i32); } s_count[(s.as_bytes()[i] - b'a') as usize] += 1; s_count[(s.as_bytes()[i - p.len()] - b'a') as usize] -= 1; } if p_count == s_count { res.push((s.len() - p.len()) as i32); } res } } fn main() { let sl = Solution::find_anagrams("cbaebabacd".to_string(), "abc".to_string()); println!("{:?}", sl); }