Challenge 39
Rust Challenge: Unique Characters in a String
Write a function has_unique_chars
that checks if a string has all unique characters (case-sensitive). Ignore spaces and special characters, focusing only on ASCII alphanumeric characters.
use std::collections::HashSet; pub fn has_unique_chars(input: &str) -> bool { // your implementation goes here // don't touch the code in the main function below } fn main() { // Test 1: Empty string let result1 = has_unique_chars(""); if !result1 { panic!("Test 1 failed: Expected true, got false"); } println!("Test 1 passed: has_unique_chars(\"\") = true"); // Test 2: All unique characters let result2 = has_unique_chars("abcdefg"); if !result2 { panic!("Test 2 failed: Expected true, got false"); } println!("Test 2 passed: has_unique_chars(\"abcdefg\") = true"); // Test 3: String with duplicates let result3 = has_unique_chars("aabbcc"); if result3 { panic!("Test 3 failed: Expected false, got true"); } println!("Test 3 passed: has_unique_chars(\"aabbcc\") = false"); // Test 4: Single character let result4 = has_unique_chars("a"); if !result4 { panic!("Test 4 failed: Expected true, got false"); } println!("Test 4 passed: has_unique_chars(\"a\") = true"); // Test 5: Case sensitivity let result5 = has_unique_chars("Aa"); let result6 = has_unique_chars("AA"); if !result5 { panic!("Test 5a failed: Expected true, got false"); } if result6 { panic!("Test 5b failed: Expected false, got true"); } println!("Test 5 passed: has_unique_chars(\"Aa\") = true, has_unique_chars(\"AA\") = false"); // Test 6: Spaces in string let result7 = has_unique_chars("a b c"); let result8 = has_unique_chars("a b b c"); if !result7 { panic!("Test 6a failed: Expected true, got false"); } if result8 { panic!("Test 6b failed: Expected false, got true"); } println!("Test 6 passed: has_unique_chars(\"a b c\") = true, has_unique_chars(\"a b b c\") = false"); // Test 7: Large string with no duplicates let long_str1 = "abcdefghijklmnopqrstuvwxyz"; let result10 = has_unique_chars(long_str1); if !result10 { panic!("Test 8 failed: Expected true, got false"); } println!("Test 8 passed: has_unique_chars(\"long unique string\") = true"); // Test 8: Large string with duplicates let long_str2 = "abcabcabc".repeat(100); let result11 = has_unique_chars(&long_str2); if result11 { panic!("Test 9 failed: Expected false, got true"); } println!("Test 9 passed: has_unique_chars(\"large duplicated string\") = false"); // Test 9: Mixed case with special characters let result12 = has_unique_chars("AbC!@#"); let result13 = has_unique_chars("AbC!@#A"); if !result12 { panic!("Test 10a failed: Expected true, got false"); } if result13 { panic!("Test 10b failed: Expected false, got true"); } println!("Test 10 passed: has_unique_chars(\"AbC!@#\") = true, has_unique_chars(\"AbC!@#A\") = false"); }
Solution
Click to Show/Hide Solution
#![allow(unused)] fn main() { use std::collections::HashSet; pub fn has_unique_chars(input: &str) -> bool { let mut seen = HashSet::new(); for ch in input.chars() { if ch.is_whitespace() { continue; } if !seen.insert(ch) { return false; } } true } }