给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
输入: strs = [""]
输出: [[""]]
示例 3:
输入: strs = ["a"]
输出: [["a"]]
提示:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i] 仅包含小写字母
其实就是个分组,将有相同字符的str放一组
那只需要用一个hashmap,key为字符使用情况(都用了哪些字符),val为str
然后将这些按照字典val,返回即可
func groupAnagrams(strs []string) [][]string {
var res [][]string
dict := make(map[[26]int][]string)
for _,str := range strs{
t := [26]int{}
for _,c := range str{
t[c-'a']+=1
}
dict[t]=append(dict[t], str)
}
for _,r := range dict{
res = append(res, r)
}
return res
}
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
dic={}
res=[]
for s in strs:
n=[0]*26
for c in s:
n[ord(c)-ord('a')]+=1
nn=tuple(n)
if nn not in dic:
dic[nn]=[s]
else:
dic[nn].append(s)
for d in dic:
res.append(dic[d])
return res