49. Group Anagrams

🟧 Medium

Given an array of strings strs, group the anagrams together. You can return the answer in any order.

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

Example 1

Input: strs = ["eat","tea","tan","ate","nat","bat"] Output: [["bat"],["nat","tan"],["ate","eat","tea"]]

Example 2

Input: strs = [""] Output: [[""]]

Example 3

Input: strs = ["a"] Output: [["a"]]

Constraints

  • 1 <= strs.length <= 10^4

  • 0 <= strs[i].length <= 100

  • strs[i] consists of lowercase English letters.

Solution

My Solution

func groupAnagrams(strs []string) [][]string {
    m := map[string][]string{}
    for _, s := range strs {
        m[sortString(s)] = append(m[sortString(s)],s)
    }

    res := make([][]string,0,len(m))

    for _, v := range m {
        res=append(res,v)
    }
    return res
}

func sortString(s string) string {
    str := []rune(s)
    sort.Slice(str, func(i, j int) bool {
        return str[i] < str[j]
    })
    
    return string(str)
}
result

Leetcode: link

Last updated

Was this helpful?