leetcode之字母异位词分组
题目描述:
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
输入: strs = [""]
输出: [[""]]
示例 3:
输入: strs = ["a"]
输出: [["a"]]
提示:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i] 仅包含小写字母
通过次数288,834提交次数430,973
解题思路:
首先对数组中的每一个字符串进行排序,之后遍历这个列表,做一个映射记录。
这里使用defaultdict,这个强大的字典!!!
它的一个强大的方法就是setdefault(key,default),它的功能如下:
''' 返回dict[key]的值,如果有的话,否则返回default,如果有default的话,否则返回None 在没有dict[key],且传入default的情况下,同时会插入default,即dict[key]=default'''
最后得到一个映射的字典数据类型如下:
假设列表中有一个字符串:abc,同时还有acb,bac,bca的字母异位词,那么其在字典中的一个映射就是:abc:[abc,acb,bac,bca],其他的映射依次类推
最后通过list()方法将映射字典的values()转成列表就得到了想要的结果!
源码:
from collections import defaultdict
from typing import Listclass Solution:def groupAnagrams(self, strs: List[str]) -> List[List[str]]:map_dict=defaultdict() # {abc:[abc,acb,bac]}ordered_list=[''.join(sorted(i)) for i in strs]for i in range(len(ordered_list)):map_dict.setdefault(ordered_list[i],[]).append(strs[i])'''返回dict[key]的值,如果有的话,否则返回default,如果有default的话,否则返回None在没有dict[key],且传入default的情况下,同时会插入default,即dict[key]=default'''return list(map_dict.values())if __name__ == '__main__':strs = ["eat", "tea", "tan", "ate", "nat", "bat"]print(Solution().groupAnagrams(strs))
同步更新于个人博客系统:leetcode之字母异位词分组
leetcode之字母异位词分组相关推荐
- LeetCode 49字母异位词分组50pow(x,n)51八皇后
原创公众号:bigsai 如果不错记得点赞收藏! 关注回复 bigsai 领取Java进阶pdf资源,回复进群加入力扣打卡群. 上周打卡内容:43字符串相乘&44通配符匹配 45跳跃游戏&am ...
- leetcode 49. 字母异位词分组
49. 字母异位词分组 - 力扣(LeetCode) 一开始想的是把各个字符串中每个字符ascii码值相加,然后相同的ascii码值放在一个组,在相同的ascii码值组中再去细找字母异位词. 一开始算 ...
- LeetCode 49. 字母异位词分组(哈希)
1. 题目 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例:输入: ["eat", "tea", "ta ...
- leetcode 49. 字母异位词分组(排序+hash)
给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan&quo ...
- LeetCode 49. 字母异位词分组 Group Anagrams
给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan&quo ...
- LeetCode 49 字母异位词分组
力扣 思路:哈希表: 排序:对两个字符串分别进行排序之后得到的字符串是相同的 将排序之后的字符串作为哈希表的键 (参考LeetCode官方题解) 定义哈希表 unordered_map< ...
- 【LeetCode】【HOT】49. 字母异位词分组(递归)
[LeetCode][HOT]49. 字母异位词分组 文章目录 [LeetCode][HOT]49. 字母异位词分组 package hot;import java.util.ArrayList; i ...
- 模拟卷Leetcode【普通】049. 字母异位词分组
049. 字母异位词分组 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母都恰好只用一次. 示 ...
- LeetCode 热题 HOT — 字母异位词分组
字母异位词分组 原题地址 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次. ...
最新文章
- Jupyter Notebook各种使用方法
- “比特币耶稣”罗杰·沃推特赠币,留下BCH钱包地址就有份
- ci github 通知_初探CI,Github调戏Action手记——自动构建并发布
- 小白 vue-cli 项目打包
- 二进制代码查看器Binary Viewer下载教程
- Android之Timer和TimerTask的介绍
- initial、inherit、unset、revert和all
- python输出矩阵的行数_python查看矩阵的行列号以及维数方式
- javascript指南_JavaScript的完整指南
- Azure Messaging-ServiceBus Messaging消息队列技术系列1-基本概念和架构
- Cookie的过期时间设置
- 开源软件之lftp的使用
- Alpha、Beta、RC、GA版本的区别
- imagine php,Yii2第三方类库插件Imagine的安装和使用
- 如何将自己的win7电脑变身WiFi无线网络热点
- 立方尾不变-Python
- 虚拟机无法连接到图形服务器,vmware vsphere client无法连接到服务器
- 华为的隐藏功能,你们知道多少?
- 切入点表达式的写法详解
- 阿里巴巴高效的页面动画解决方案——Ant Motion Design
热门文章
- HC-SR501 人体红外感应模块
- 教授专栏11|张处:企业支付政策和信用风险:来自信用违约掉期(CDS)市场的证据
- linux c语言内核函数手册,Linux C函数实例速查手册
- java软件工程师工作业绩_JAVA软件工程师简历自我评价
- 实验6-4 单词首字母大写 (15 分)
- 中等专业学校计算机教师,中等专业学校计算机老师年度工作总结
- 微服务商城系统(十四)微信支付
- 软件需求工程(第二章)
- n96 微信 服务器繁忙,网友称塞班手机已无法登陆QQ/微信
- linux 查看当前状态_Linux视频编辑的当前状态2018