leetcode_rust/
valid_anagram.rs1#![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}