给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
说明:
所有输入均为小写字母。
不考虑答案输出的顺序。
思路:排序相同词组即为异位词。
#-*- coding = utf-8 -*-
#@Time : 2020/12/14 16:36
#@Author :Anq1
#@File : Grouping_heterotopic_words.py
#@Software : PyCharm
def groupAnagrams(strs):
dic = {}
for s in strs:
print(s)
keys = "".join(sorted(s))
if keys not in dic:
dic[keys] = [s]
print(dic)
else:
dic[keys].append(s)
print(list(dic.values()))
strs = ["eat","tea","tan","ate","nat","bat"]
groupAnagrams(strs)
看了更好的代码(充分理解dict.get(key,default=false) )如下:
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
dict = {}
for item in strs:
key = tuple(sorted(item))
dict[key] = dict.get(key, []) + [item]
return list(dict.values())
主要是dict.get()函数的理解
作者:meng-zhi-hen-n
链接:https://leetcode-cn.com/problems/group-anagrams/solution/python3-99-by-meng-zhi-hen-n/