原题
https://leetcode.cn/problems/group-anagrams/description/
思路
字典 + 排序
复杂度
时间:O(n)
空间:O(n)
Python代码
from collections import defaultdict
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
d = defaultdict(list)
for s in strs:
key = "".join(sorted(s))
d[key].append(s)
return list(d.values())
Go代码
func groupAnagrams(strs []string) [][]string {
// 字典储存键值和异位词列表
m := map[string][]string{}
for _, str := range strs {
val := str
// 将字符串转为字符数组
chars := []byte(str)
// 按字母顺序排序
sort.Slice(chars, func(i, j int) bool {
return chars[i] < chars[j]
})
// 字符数组转为字符串
key := string(chars)
m[key] = append(m[key], val)
}
var ans [][]string
for _, arr := range m {
ans = append(ans, arr)
}
return ans
}

被折叠的 条评论
为什么被折叠?



