LeetCode 49 [Group Anagrams]

原题

给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。

对于字符串数组 ["eat", "tea", "tan", "ate", "nat", "bat"]
返回

[
  ["ate", "eat","tea"],
  ["nat","tan"],
  ["bat"]
]

解题思路

  • 首先,注意返回结果中,子字符串数组内要保持有序,所以第一步先把strs排序
  • 本题考察使用hashtable,与直接判断两个字符串是否是anagram不同,遍历一遍字符串数组,将排序的字符串作为key,把原始字符串作为value
  • 最后遍历hashtable生成结果

完整代码

class Solution(object):
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        strs.sort()
        d = {}
        for str in strs:
            if "".join(sorted(str)) not in d:
                d["".join(sorted(str))] = [str]
            else:
                d["".join(sorted(str))].append(str)
                
        res = []
        for key, value in d.items():
            res.append(value)
        return res
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Given an array of strings, group anagrams together. For e...
    关玮琳linSir阅读 1,882评论 0 5
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,362评论 0 33
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,906评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,735评论 18 399
  • ❤ 想这道菜的时候,我考虑了2个方案:一是把茄子炒熟,最后拌入茴香稍微炒一炒再去烤。这个方案的好处是保留口感;第二...
    越王的小馆阅读 2,720评论 0 0

友情链接更多精彩内容