package main
import (
"fmt"
"sort"
"strings"
)
// Function to group anagrams
func groupAnagrams(strs []string) [][]string {
anagramMap := make(map[string][]string)
for _, str := range strs {
sortedStr := sortString(str) // Sort characters in the string
anagramMap[sortedStr] = append(anagramMap[sortedStr], str)
}
// Collect grouped anagrams into a slice
var result [][]string
for _, group := range anagramMap {
result = append(result, group)
}
return result
}
// Helper function to sort characters in a string
func sortString(s string) string {
chars := strings.Split(s, "")
sort.Strings(chars)
return strings.Join(chars, "")
}
func main() {
inputWords := []string{"eat", "tea", "tan", "ate", "nat", "bat", "tae"}
groupedAnagrams := groupAnagrams(inputWords)
for _, group := range groupedAnagrams {
fmt.Println(strings.Join(group, " "))
}
}
/*
run:
tan nat
bat
eat tea ate tae
*/