Solve valid-anagram.
This commit is contained in:
		
							parent
							
								
									f794fd532c
								
							
						
					
					
						commit
						84ceb51cb1
					
				| 
						 | 
				
			
			@ -7,4 +7,5 @@ pub mod plus_one;
 | 
			
		|||
pub mod reverse_integer;
 | 
			
		||||
pub mod roman_to_integer;
 | 
			
		||||
pub mod two_sum;
 | 
			
		||||
pub mod valid_anagram;
 | 
			
		||||
pub mod valid_parenthesis;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue