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
}