美文网首页
字谜分组

字谜分组

作者: Houtasu | 来源:发表于2018-07-30 16:55 被阅读0次

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

    示例:

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

    说明:

    所有输入均为小写字母。

    不考虑答案输出的顺序。

    解题思路:
    遇到分类为题,首先要想到python的字典,字典的键可以作为类别,值就是该类别下的数据了。这道题可以用排序后的字符串作为键,而不同的字母异位词就是值了。另外,在python字典中,可以之间使用 字典名[新的键]=新的值来添加一个新的键值对。但是不可以直接访问一个没有键名的值,会抛出异常。在本题中,我们遍历原始数组并添加到字典时,会遇到直接访问值的情况,这里可以用到collections库中的defaultdict类型,它需要一个默认参数,当遇到没有键名的情况下可以自动生成并赋予该默认值。具体可以参考下面的代码理解。
    代码如下:

    def groupAnagrams(self, strs):
            """
            :type strs: List[str]
            :rtype: List[List[str]]
            """
            dic = collections.defaultdict(list)
    
            for i in strs:
                dic[''.join(sorted(i))].append(i)   
                    #此时直接访问了字典的值,如果字典没有对应的键会抛出异常,所以要使用defaultdict
            return list(dic.values())
    

    相关文章

      网友评论

          本文标题:字谜分组

          本文链接:https://www.haomeiwen.com/subject/rjifvftx.html