How to check if two strings are anagram (same letters different words) in Rust

1 Answer

0 votes
use std::collections::HashMap;

fn are_anagram(s1: &str, s2: &str) -> bool {
    if s1.len() != s2.len() {
        return false;
    }

    let mut freq = HashMap::new();

    for ch in s1.chars() {
        *freq.entry(ch).or_insert(0) += 1;
    }

    for ch in s2.chars() {
        match freq.get_mut(&ch) {
            Some(count) => {
                *count -= 1;
                if *count == 0 {
                    freq.remove(&ch);
                }
            }
            None => return false,
        }
    }

    freq.is_empty()
}

fn main() {
    println!("{}", if are_anagram("rust", "surt") { "yes" } else { "no" });
    println!("{}", if are_anagram("rust", "stur") { "yes" } else { "no" });
    println!("{}", if are_anagram("rust", "rush") { "yes" } else { "no" });
}



/*
run:

yes
yes
no

*/

 



answered Nov 13, 2025 by avibootz
...