leetcode_rust/
valid_anagram.rs

1#![allow(dead_code)]
2
3pub fn is_anagram(s: String, t: String) -> bool {
4    use std::collections::HashMap;
5
6    if s.len() != t.len() {
7        return false;
8    }
9
10    let mut map = HashMap::new();
11    for c in s.chars() {
12        match map.get_mut(&c) {
13            Some(v) => *v += 1,
14
15            None => {
16                map.insert(c, 1);
17            }
18        }
19    }
20    for c in t.chars() {
21        match map.get_mut(&c) {
22            Some(v) => {
23                *v -= 1;
24                if *v < 0 {
25                    return false;
26                }
27            }
28
29            None => {
30                return false;
31            }
32        }
33    }
34    true
35}
36
37#[cfg(test)]
38mod tests {
39    use super::*;
40
41    #[test]
42    fn test1() {
43        assert_eq!(
44            is_anagram(String::from("anagram"), String::from("nagaram")),
45            true
46        );
47        assert_eq!(is_anagram(String::from("rat"), String::from("car")), false);
48    }
49}