Group Anagrams
LeetCode 49 · View on LeetCode
Anagrams share the same sorted character sequence. Use sorted string as a dict key to group words together.
from collections import defaultdict
def group_anagrams(strs: list[str]) -> list[list[str]]:
groups = defaultdict(list)
for s in strs:
groups[tuple(sorted(s))].append(s)
return list(groups.values())
if __name__ == '__main__':
result = group_anagrams(["eat", "tea", "tan", "ate", "nat", "bat"])
for group in sorted(result, key=len, reverse=True):
print(sorted(group))
# ['ate', 'eat', 'tea']
# ['nat', 'tan']
# ['bat']
print(group_anagrams([""])) # [['']]
print(group_anagrams(["a"])) # [['a']]