From 940c42bbae0e6cc057834494ebb7cf9df5514b9c Mon Sep 17 00:00:00 2001 From: jerr-it Date: Thu, 29 Sep 2022 14:10:33 +0200 Subject: [PATCH] Added anagram check --- src/string/anagram.rs | 20 ++++++++++++++++++++ src/string/mod.rs | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 src/string/anagram.rs diff --git a/src/string/anagram.rs b/src/string/anagram.rs new file mode 100644 index 00000000000..3c291cba392 --- /dev/null +++ b/src/string/anagram.rs @@ -0,0 +1,20 @@ +pub fn check_anagram(s: &str, t: &str) -> bool { + let mut s = s.to_ascii_lowercase().chars().collect::>(); + let mut t = t.to_ascii_lowercase().chars().collect::>(); + s.sort_unstable(); + t.sort_unstable(); + s == t +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_check_anagram() { + assert!(check_anagram("anagram", "nagaram")); + assert!(!check_anagram("rat", "car")); + assert!(check_anagram("abcde", "edcba")); + assert!(check_anagram("sIlEnT", "LiStEn")); + } +} diff --git a/src/string/mod.rs b/src/string/mod.rs index 0e0d3e9db48..6db6c6b96c3 100644 --- a/src/string/mod.rs +++ b/src/string/mod.rs @@ -1,4 +1,5 @@ mod aho_corasick; +mod anagram; mod burrows_wheeler_transform; mod hamming_distance; mod knuth_morris_pratt; @@ -9,6 +10,7 @@ mod run_length_encoding; mod z_algorithm; pub use self::aho_corasick::AhoCorasick; +pub use self::anagram::check_anagram; pub use self::burrows_wheeler_transform::{ burrows_wheeler_transform, inv_burrows_wheeler_transform, };