难度:中等 题目来源:力扣(LeetCode) https://leetcode-cn.com/problems/group-anagrams
说明:
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],
输出:
[
[“ate”,”eat”,”tea”],
[“nat”,”tan”],
[“bat”]
]
解法:
import (
"sort"
"strings"
)
func groupAnagrams(strs []string) [][]string {
if len(strs) == 0 {
return [][]string{}
}
ret, cache := make([][]string, 0, len(strs)), make(map[string][]string, len(strs))
for _, value := range strs {
arr := strings.Split(value, "")
sort.Strings(arr)
key := strings.Join(arr, "")
cache[key] = append(cache[key], value)
}
for _, value := range cache {
ret = append(ret, value)
}
return ret
}