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())
相关推荐
金智维科技官方26 分钟前
常见的大模型分类
人工智能·算法·ai·语言模型·数据挖掘
yzzzzzzzzzzzzzzzzz37 分钟前
leetcode热题——有效的括号
算法·
崎岖Qiu1 小时前
leetcode1343:大小为K的子数组(定长滑动窗口)
java·算法·leetcode·力扣·滑动窗口
Shun_Tianyou2 小时前
Python Day25 进程与网络编程
开发语言·网络·数据结构·python·算法
Giser探索家2 小时前
什么是2米分辨率卫星影像数据?
大数据·人工智能·数码相机·算法·分类·云计算
jz_ddk4 小时前
[科普] AI加速器架构全景图:从GPU到光计算的算力革命
人工智能·学习·算法·架构
曦月逸霜4 小时前
内部排序算法总结(考研向)
考研·算法·排序算法
仪器科学与传感技术博士5 小时前
Matplotlib库:Python数据可视化的基石,发现它的美
开发语言·人工智能·python·算法·信息可视化·matplotlib·图表可视化
BOB_BOB_BOB_5 小时前
【ee类保研面试】其他类---计算机网络
计算机网络·面试·职场和发展·保研
success6 小时前
【爆刷力扣-二叉树】层次遍历
算法