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 19f39e8d756..813741134a2 100644 --- a/src/string/mod.rs +++ b/src/string/mod.rs @@ -1,4 +1,5 @@ mod aho_corasick; +mod anagram; mod boyer_moore_search; mod burrows_wheeler_transform; mod hamming_distance; @@ -14,6 +15,7 @@ mod suffix_tree; mod z_algorithm; pub use self::aho_corasick::AhoCorasick; +pub use self::anagram::check_anagram; pub use self::boyer_moore_search::boyer_moore_search; pub use self::burrows_wheeler_transform::{ burrows_wheeler_transform, inv_burrows_wheeler_transform,