rustgym/leetcode/
_567_permutation_in_string.rs1struct Solution;
2
3impl Solution {
4 fn check_inclusion(s1: String, s2: String) -> bool {
5 let mut c1: [usize; 26] = [0; 26];
6 let mut c2: [usize; 26] = [0; 26];
7 let n1 = s1.len();
8 let n2 = s2.len();
9 let s1: Vec<u8> = s1.bytes().collect();
10 let s2: Vec<u8> = s2.bytes().collect();
11 if n1 > n2 {
12 return false;
13 }
14 for i in 0..n1 {
15 c1[(s1[i] - b'a') as usize] += 1;
16 c2[(s2[i] - b'a') as usize] += 1;
17 }
18 if c1 == c2 {
19 return true;
20 }
21 for i in n1..n2 {
22 c2[(s2[i] - b'a') as usize] += 1;
23 c2[(s2[i - n1] - b'a') as usize] -= 1;
24 if c1 == c2 {
25 return true;
26 }
27 }
28 false
29 }
30}
31
32#[test]
33fn test() {
34 let s1 = "ab".to_string();
35 let s2 = "eidbaooo".to_string();
36 let res = true;
37 assert_eq!(Solution::check_inclusion(s1, s2), res);
38 let s1 = "ab".to_string();
39 let s2 = "eidboaoo".to_string();
40 let res = false;
41 assert_eq!(Solution::check_inclusion(s1, s2), res);
42}