leetcode 49. 字母异位词分组

题目描述

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:


输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],
输出:
[
[“ate”,”eat”,”tea”],
[“nat”,”tan”],
[“bat”]
]

说明:
所有输入均为小写字母。
不考虑答案输出的顺序。

题解

遍历strs数组,对word进行排序,判断str是否在hashMap

示例代码(go)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func groupAnagrams(strs []string) [][]string {
res := make([][]string, 0)
hashMap := make(map[string]int)
for _, word := range strs {
arr := strings.Split(word, "")
sort.Strings(arr)
str := strings.Join(arr, "")
if i, ok := hashMap[str]; ok {
res[i] = append(res[i], word)
} else {
hashMap[str] = len(res)
res = append(res, []string{word})
}
}
return res
}