算法49. 字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
解释:
- 在 strs 中没有字符串可以通过重新排列来形成
"bat"
。- 字符串
"nat"
和"tan"
是字母异位词,因为它们可以重新排列以形成彼此。- 字符串
"ate"
,"eat"
和"tea"
是字母异位词,因为它们可以重新排列以形成彼此。示例 2:
输入: strs = [""]
输出: [[""]]
示例 3:
输入: strs = ["a"]
输出: [["a"]]
提示:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i]
仅包含小写字母
class Solution:def groupAnagrams(self, strs: List[str]) -> List[List[str]]:# defaultdict创建字典比dict创建字典的好处是,当插入的key不存在时,不会报错d = defaultdict(list)for s in strs:# 对字符串s按照字符顺序排序,变成列表,然后在合并成字符串sorted_s = ''.join(sorted(s))# sorted_s作为key,将当前的s合并到对应value的列表中# 排序后相同的字符串分到同一组d[sorted_s].append(s)# 对哈希表的value保存分组后的结果,结构[[],[],[]]return list(d.values())