49. 字母异位次分组(Python)

题目

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

说明

所有输入均为小写字母。
不考虑答案输出的顺序。

示例

输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]

解答

我们可以用一个字典存储所有组合。我们要考虑,字母异位词具有什么共性,显然,我们将字母异位词中的字母进行排序,排序后得到的结果都是一样的,例如字母异位词“abc”和“bac”排序后的结果都是“abc”,因此我们可以使用每一组字母异位词排序后的结果作为键,这些字母异位词组成的列表作为值。

from collections import defaultdict
class Solution:
    def groupAnagrams(self, strs):
        """
        :param strs: List[str]
        :return: List[List[str]]
        """
        ans = defaultdict(list)
        for s in strs:
            ans[tuple(sorted(s))].append(s)
        return ans.values()

如有疑问或建议,欢迎评论区留言~

你可能感兴趣的:(49. 字母异位次分组(Python))