Leetcode 49 字母异位词分组

题目传送门

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

示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
说明:
所有输入均为小写字母
不考虑答案输出的顺序。

分析:
对字符串数组中的每个词,对该词中的每一个字母按照字典序进行排序,那么所有的异位词对字母进行排序后应当有相同的字母序列,以该字母序列作为词典的键,该键的值对应的是含有此单词的集合在二维的输出数组中的下标。

Python3代码

class Solution:
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        res, dict, cnt = [], {}, 0
        for str in strs:
            key = "".join(sorted(list(str)))
            if key in dict.keys():
                res[dict[key]].append(str)
            else:
                dict[key] = cnt
                res.append([str])
                cnt += 1
        return res 

你可能感兴趣的:(Leetcode 49 字母异位词分组)