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())
相关推荐
hanlin033 分钟前
刷题笔记:力扣第206题-反转链表
笔记·leetcode·链表
闪电悠米20 分钟前
力扣hot100-240.搜索二维矩阵2-单调性剪枝详解
数据结构·算法·leetcode·矩阵·哈希算法
imuliuliang25 分钟前
关于基于图论的最短路径算法性能对比分析7
算法
imuliuliang1 小时前
关于从栈与队列看算法思维的演化路径7
算法
春生野草1 小时前
个人笔记--大顶堆和基数排序
java·数据结构·算法
白狐_7981 小时前
【408计算机网络|第04章·下|408-CN-04B】网络层(下):路由算法、RIP、OSPF、BGP、IPv6与路由器
计算机网络·算法·智能路由器
donoot2 小时前
PaddleOCR + PyMuPDF 生成【全兼容双层 PDF】完整实操指南
人工智能·算法·pymupdf·paddleocr·双层pdf
paeamecium3 小时前
【PAT甲级真题】- Rational Sum (20)
数据结构·c++·python·算法·pat考试·pat
拳里剑气12 小时前
C++算法:BFS解决FloodFill算法
c++·算法·bfs·宽度优先