Description
- Group Anagrams Medium
Given an array of strings, group anagrams together.
Example
Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
Note:
- All inputs will be in lowercase.
- The order of your output does not matter.
题意
将给定字符串数组中有相同字母的字符串归为一类组合在一起
要求:所有的输入字符串都小写,输出顺序无关紧要。
解题思路1
这题首先要判断字符串中所含字符是否相同,可以将字符串拆分为单个字符比较。将有相同字母的归为一类,在python中使用字典不失为一种好方法。具体做法就是把排序后的字符串作为字典的key值,那么取字典的values值就是所需结果。
为了避免出现KeyError异常,考虑使用defaultdict方法。
code
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
d = collections.defaultdict(list)
for s in strs:
tup = tuple(sorted(s))
d[tup].append(s)
print(d)
return list(d.values())