【LeetCode】49. 字母异位词分组

49. 字母异位词分组

知识点:字符串;哈希表

题目描述

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。

示例
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:
输入: strs = [""]
输出: [[""]]

示例 3:
输入: strs = ["a"]
输出: [["a"]]


解法一:排序

字母异位词就是说字符串所含的字符一样,并且每个字符的个数也是一样的。
所以可以直接使用排序,字母异位词排序完后肯定是一样的,然后用一个哈希表存储就可以了

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        hashtable = {}
        for cur_str in strs:
            sort_str = tuple(sorted(cur_str))   # 字典的key不能是列表
            hashtable[sort_str] = hashtable.get(sort_str, []) + [cur_str]
        return list(hashtable.values())
posted @ 2022-04-15 10:33  Curryxin  阅读(33)  评论(0编辑  收藏  举报
Live2D