package group_anagrams import ( "hash/maphash" "slices" ) func SortString(s string) string { runes := []rune(s) slices.Sort(runes) return string(runes) } func AnagramHash(letters string) uint64 { var h maphash.Hash h.WriteString(SortString(letters)) return h.Sum64() } func GroupAnagrams(items []string) [][]string { anagrams := map[uint64][]string{} for _, item := range items { hash := AnagramHash(item) similar, exists := anagrams[hash] if exists { anagrams[hash] = append(similar, item) } else { anagrams[hash] = []string{item} } } result := [][]string{} for _, group := range anagrams { result = append(result, group) } return result }