1
Fork 0

Solve valid-anagram.

This commit is contained in:
Bauke 2022-04-08 14:59:10 +02:00
parent f794fd532c
commit 84ceb51cb1
Signed by: Bauke
GPG Key ID: C1C0F29952BCF558
2 changed files with 32 additions and 0 deletions

View File

@ -7,4 +7,5 @@ pub mod plus_one;
pub mod reverse_integer; pub mod reverse_integer;
pub mod roman_to_integer; pub mod roman_to_integer;
pub mod two_sum; pub mod two_sum;
pub mod valid_anagram;
pub mod valid_parenthesis; pub mod valid_parenthesis;

View File

@ -0,0 +1,31 @@
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::<Vec<_>>();
a.sort();
let mut b = b.chars().collect::<Vec<_>>();
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);
}
}