题目描述:

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

字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。

示例 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之字母异位词分组相关推荐

  1. LeetCode 49字母异位词分组50pow(x,n)51八皇后

    原创公众号:bigsai 如果不错记得点赞收藏! 关注回复 bigsai 领取Java进阶pdf资源,回复进群加入力扣打卡群. 上周打卡内容:43字符串相乘&44通配符匹配 45跳跃游戏&am ...

  2. leetcode 49. 字母异位词分组

    49. 字母异位词分组 - 力扣(LeetCode) 一开始想的是把各个字符串中每个字符ascii码值相加,然后相同的ascii码值放在一个组,在相同的ascii码值组中再去细找字母异位词. 一开始算 ...

  3. LeetCode 49. 字母异位词分组(哈希)

    1. 题目 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例:输入: ["eat", "tea", "ta ...

  4. leetcode 49. 字母异位词分组(排序+hash)

    给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan&quo ...

  5. LeetCode 49. 字母异位词分组 Group Anagrams

    给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan&quo ...

  6. LeetCode 49 字母异位词分组

    力扣 思路:哈希表: 排序:对两个字符串分别进行排序之后得到的字符串是相同的 将排序之后的字符串作为哈希表的键     (参考LeetCode官方题解)  定义哈希表 unordered_map< ...

  7. 【LeetCode】【HOT】49. 字母异位词分组(递归)

    [LeetCode][HOT]49. 字母异位词分组 文章目录 [LeetCode][HOT]49. 字母异位词分组 package hot;import java.util.ArrayList; i ...

  8. 模拟卷Leetcode【普通】049. 字母异位词分组

    049. 字母异位词分组 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母都恰好只用一次. 示 ...

  9. LeetCode 热题 HOT — 字母异位词分组

    字母异位词分组 原题地址 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次. ...

最新文章

  1. Jupyter Notebook各种使用方法
  2. “比特币耶稣”罗杰·沃推特赠币,留下BCH钱包地址就有份
  3. ci github 通知_初探CI,Github调戏Action手记——自动构建并发布
  4. 小白 vue-cli 项目打包
  5. 二进制代码查看器Binary Viewer下载教程
  6. Android之Timer和TimerTask的介绍
  7. initial、inherit、unset、revert和all
  8. python输出矩阵的行数_python查看矩阵的行列号以及维数方式
  9. javascript指南_JavaScript的完整指南
  10. Azure Messaging-ServiceBus Messaging消息队列技术系列1-基本概念和架构
  11. Cookie的过期时间设置
  12. 开源软件之lftp的使用
  13. Alpha、Beta、RC、GA版本的区别
  14. imagine php,Yii2第三方类库插件Imagine的安装和使用
  15. 如何将自己的win7电脑变身WiFi无线网络热点
  16. 立方尾不变-Python
  17. 虚拟机无法连接到图形服务器,vmware vsphere client无法连接到服务器
  18. 华为的隐藏功能,你们知道多少?
  19. 切入点表达式的写法详解
  20. 阿里巴巴高效的页面动画解决方案——Ant Motion Design

热门文章

  1. HC-SR501 人体红外感应模块
  2. 教授专栏11|张处:企业支付政策和信用风险:来自信用违约掉期(CDS)市场的证据
  3. linux c语言内核函数手册,Linux C函数实例速查手册
  4. java软件工程师工作业绩_JAVA软件工程师简历自我评价
  5. 实验6-4 单词首字母大写 (15 分)
  6. 中等专业学校计算机教师,中等专业学校计算机老师年度工作总结
  7. 微服务商城系统(十四)微信支付
  8. 软件需求工程(第二章)
  9. n96 微信 服务器繁忙,网友称塞班手机已无法登陆QQ/微信
  10. linux 查看当前状态_Linux视频编辑的当前状态2018