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 <= 104

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

  • strs[i] consists of lowercase English letters.

解題

func groupAnagrams(strs []string) [][]string {
    arr := make([]string, 0)
    m := make(map[string][]string)
    ans := make([][]string, 0)
    
    for _, str := range strs {
        str2 := []rune(str)
        sort.Slice(str2, func(i int, j int) bool { return str2[i] < str2[j] })
        
        m[string(str2)] = append(m[string(str2)], str)
        arr = append(arr, string(str2))
    }
    
    for k := range m {
        ans = append(ans, m[k])
    }
    
    return ans
}

Last updated