10/1 力扣 49.字母异位词分组

基本知识:

关于字符串的排序:

1.多个字符串排序

1.1使用python内置的sorted()

使用该函数后原对象并不发生变化

1.2若多个字符串使用列表进行存储,使用列表的sort()方法

使用该函数后原对象原地变化

2.对单个字符串里的字母进行排序

使用python内置的sorted(),排序后的返回结果是由单个字符组成的列表

若想将这个列表变为一个完整的字符串,使用"".join()

2.关于defaultdict(list)

defaultdict是Pythoncollections模块中的一个类,它继承自内置的dict类。与普通字典不同,defaultdict在初始化时可以指定一个默认工厂函数,这个函数会在访问不存在的键时被调用,返回一个默认值。这样做的好处是避免了在访问不存在的键时抛出KeyError异常,同时也简化了代码。

在创建d = defaultdict(list)之后,可以像使用普通字典一样使用d,但是当尝试访问一个不存在的键时,例如d['new_key'],defaultdict会自动创建一个新条目'new_key': [],并且不会抛出异常。这样,就可以直接对这个新创建的空列表进行append操作,而不需要先检查键是否存在。

3.字典的属性

使用dict.keys()和dict.values()就可访问字典全部键和对应值

使用list(dict.values())就可将字典全部值放入一个列表中

题目:

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

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:

复制代码
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

示例 2:

复制代码
输入: strs = [""]
输出: [[""]]

示例 3:

复制代码
输入: strs = ["a"]
输出: [["a"]]

思路:

使用hash思想,使用字典中键和值之间的对应

若字符串字母组成相似,则排序后一定相等,将排序后的字符串作为键,使用这些字符的串都作为该键的值,最后将字典的值变为列表返回。

python 复制代码
class Solution(object):
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        d = defaultdict(list)
        for w in strs:
            key = "".join(sorted(w))
            d[key].append(w)
       
        return list(d.values())
相关推荐
淡海水9 小时前
【AI模型】模型量化技术详解
人工智能·算法·机器学习
炸膛坦客9 小时前
嵌入式 - 数据结构与算法:(1-1)数据结构 - 顺序表(Sequential List)
数据结构·算法·嵌入式
水龙吟啸9 小时前
数据结构与算法随机复习–Day1
数据结构·c++·算法
生成论实验室9 小时前
《事件关系阴阳博弈动力学:识势应势之道》第八篇:认知与反思关系——探索、定位与延续
人工智能·算法·架构·知识图谱·创业创新
YaraMemo10 小时前
一文带你区分全局最优解和帕累托最优解
算法·5g·信息与通信·信号处理
白夜111710 小时前
C++(标签派发 Tag Dispatching)
开发语言·c++·笔记·算法
YaraMemo10 小时前
数学优化问题中的三大转化:多目标转化为单目标,多变量转化为单变量,有约束转化为无约束
人工智能·算法·5g·信息与通信·信号处理
Ailan_Anjuxi10 小时前
【附Python源码】使用minGPT训练自己的小型GPT语言模型
算法
QuZero10 小时前
StampedLock Mechanism
java·算法
云泽80810 小时前
二叉树高阶笔试算法题精讲(二):非递归遍历与序列构造全解析
c++·算法·面试