use std::collections::HashMap;
fn group_anagrams(words: Vec<&str>) -> Vec<Vec<String>> {
let mut anagram_map: HashMap<String, Vec<String>> = HashMap::new();
for &word in &words {
let mut sorted_chars: Vec<char> = word.chars().collect();
sorted_chars.sort_unstable(); // Sort characters in the string
let sorted_str: String = sorted_chars.into_iter().collect();
anagram_map.entry(sorted_str).or_insert(Vec::new()).push(word.to_string());
}
anagram_map.into_values().collect()
}
fn main() {
let input_words = vec!["eat", "tea", "tan", "ate", "nat", "bat", "tae"];
let grouped_anagrams = group_anagrams(input_words);
for group in grouped_anagrams {
println!("{}", group.join(" "));
}
}
/*
run:
tan nat
eat tea ate tae
bat
*/