How to group Anagrams from an array of strings in Go

1 Answer

0 votes
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

*/

 



answered Jun 9, 2025 by avibootz
...