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())
相关推荐
oioihoii1 分钟前
C++23 中 constexpr 的重要改动
c++·算法·c++23
前端 贾公子7 分钟前
详解 LeetCode 第 242 题 - 有效的字母组
算法·leetcode·职场和发展
sofaraway1313 分钟前
【多目标进化算法】 MOEA/D算法(知识点)
算法
pystraf34 分钟前
UOJ 228 基础数据结构练习题 Solution
数据结构·c++·算法·线段树
海底火旺43 分钟前
破解二维矩阵搜索难题:从暴力到最优的算法之旅
javascript·算法·面试
黄昏ivi2 小时前
电力系统最小惯性常数解析
算法
独家回忆3642 小时前
每日算法-250425
算法
烁3472 小时前
每日一题(小白)模拟娱乐篇33
java·开发语言·算法
Demons_kirit3 小时前
LeetCode 2799、2840题解
算法·leetcode·职场和发展
软行3 小时前
LeetCode 每日一题 2845. 统计趣味子数组的数目
数据结构·c++·算法·leetcode