题目描述
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
说明:
所有输入均为小写字母。
不考虑答案输出的顺序。
解题思路
根据题目描述,字母异位词的组成字母都相同,组合顺序不同,所以通过比较不同单词的组成字母可以找到相同的字母组合。
1、单词拆分成字母
2、把拆分后字母都相同的单词放到一起即是字母异位词
# 通过tuple方法可以把单词拆分成单个字母,排序是为了保证有相同字母的单词能够被找到。
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
ans = {}
for s in strs:
ans[tuple(sorted(s))] = ans.get(tuple(sorted(s)),[]) + [s]
return list(ans.values())