package main import ( "fmt" "sort" ) func main() { fmt.Println(groupAnagrams([]string{"a"})) } func groupAnagrams(strs []string) [][]string { hash := make(map[string][]int) result := make([][]string, 0) for value, str := range strs { runes := []rune(str) sort.Slice(runes, func(i, j int) bool { return runes[i] < runes[j] }) if _, ok := hash[string(runes)]; ok { hash[string(runes)] = append(hash[string(runes)], value) } else { hash[string(runes)] = make([]int, 0) hash[string(runes)] = append(hash[string(runes)], value) } } for _, value := range hash { tmp := make([]string, 0) for _, value := range value { tmp = append(tmp, strs[value]) } result = append(result, tmp) } return result }