49 字母异位词分组-中等
题目:
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
输入: strs = [""] 输出: [[""]]
示例 3:
输入: strs = ["a"] 输出: [["a"]]
解题思路
所谓字母异位词,就是字母字符个数一样,且出现的次数也一样。
所以我们可以对每个字符串进行计数,统计每个字母出现的次数,并保存在数组中。
进而以数组为 key,进行查找合并。
// date 2024/01/24
// 解法1
// 字符计数
func groupAnagrams(strs []string) [][]string {
// key = [26]int
// value = []string
checkMap := map[[26]int][]string{} // key = [26]int
ans := make([][]string, 0, 16)
for _, str := range strs {
one := toCheck(str)
checkMap[one] = append(checkMap[one], str)
}
for _, v := range checkMap {
ans = append(ans, v)
}
return ans
}
func toCheck(str string) [26]int {
res := [26]int{}
for _, v := range str {
res[v-'a']++
}
return res
}
最后更新于