[英]Grouping list of anagrams from a list of words without using in-built iterable functions of Python
输入:字符串列表
I = ["top","doom","pot","mood","cigar"]
输出:集合列表(以任何顺序),其中每个集合包含一组来自输入的字谜
O = [{"mood", "doom"}, {"cigar"}, {"top", "pot"}]
我在 Python 中的解决方案(但是,它使用sorted
这是一个内置的 Python 函数)。 在将它们存储在dict
或任何其他替代品之前,我可以为所有字谜创建唯一key
其他方式是sorted
?
def groupAnagrams(S):
res = dict()
for elem in S:
elem = elem.lower()
sorted_elem = ''.join(sorted(elem))
if res.get(sorted_elem) is None:
res[sorted_elem] = set([elem])
else:
res[sorted_elem].add(elem)
return list(res.values())
只需使用frozenset
和dict.setdefault
:
def groupAnagrams(S):
res = defaultdict(list)
for k, elem in zip(map(frozenset, S), S):
res.setdefault(k, set()).add(elem)
return list(res.values())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.