leetcode刷题-49字母异位词分组

题目

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

思路

由于异位词由相同字母构成,所以可以用一个顺序的字符串作为这些字母异位词的标志,由此可以想到字典的方法。例如"ate","eat","tea",可以将"aet"作为键,字符串作为值加入其中。

实现

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        dic = {}
        for i in strs:
            tmp = "".join((lambda x:(x.sort(),x)[1])(list(i)))
            dic.setdefault(tmp,[]).append(i)
        result = list(dic.values())
        return result