pub fn is_anagram(a: String, b: String) -> bool { // Both strings must have the same length otherwise they can't be anagrams. if a.len() != b.len() { return false; } // Sort both strings' characters so they're in alphabetical order. let mut a = a.chars().collect::>(); a.sort(); let mut b = b.chars().collect::>(); b.sort(); // And if they are equal, then they're anagrams. a == b } #[test] fn test_valid_anagram() { let samples = [ (("💖🌠banana", "an💖anab🌠"), true), (("anagram", "nagaram"), true), (("bats", "tabs"), true), (("rat", "cat"), false), (("bats", "bat"), false), ]; for ((a, b), expected) in samples { assert_eq!(is_anagram(a.to_string(), b.to_string()), expected); } }