49. 字母异位词分组

知识点:字符串;哈希表

题目描述

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

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

示例
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]] 示例 2:
输入: strs = [""]
输出: [[""]] 示例 3:
输入: strs = ["a"]
输出: [["a"]]

解法一:排序

字母异位词就是说字符串所含的字符一样,并且每个字符的个数也是一样的。

所以可以直接使用排序,字母异位词排序完后肯定是一样的,然后用一个哈希表存储就可以了

class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
hashtable = {}
for cur_str in strs:
sort_str = tuple(sorted(cur_str)) # 字典的key不能是列表
hashtable[sort_str] = hashtable.get(sort_str, []) + [cur_str]
return list(hashtable.values())

最新文章

  1. Y Combinator
  2. C#协变和逆变
  3. ArcGIS空间分析工具
  4. Codeforces Round #383 (Div. 2) 题解【ABCDE】
  5. 命令行界面下用户和组管理之groupmod的使用
  6. NoSQL数据库的四大分类表格分析
  7. pomelo 协议
  8. jsp-4 用cookie实现记住密码
  9. .net 4.0 中的特性总结(五):并行编程
  10. 身份证识别OCR,开启视频模式扫一扫即可识别身份证信息
  11. 点开GitHub之后,瑟瑟发抖...的我
  12. 【python进阶】Garbage collection垃圾回收1
  13. Win32项目生成的程序exe图标显示异常的问题
  14. (hdu) 4857 逃生 (拓扑排序+优先队列)
  15. 通过日志来看Spring跨库更新操作的事务
  16. AngularJs $scope 里面的$apply 方法和$watch方法
  17. 20145207《Java程序设计》实验五(网络编程与安全)实验报告
  18. 6个动作4种难度选择!家庭减肥就用hiit
  19. vue总结07 常用插件
  20. csv2txt.cpp

热门文章

  1. 6月12日 python学习总结 框架
  2. 磁盘管理--如何在VMware上给centos7增加一块磁盘
  3. HTTP发展史,HTTP1.1与HTTP2.0的区别
  4. 【flareon6】 overlong-通过动调改内存修改程序
  5. 同一套代码部署多个实例来并行完成mysql某项任务,且避免重复执行
  6. [邮件服务]Foxmail安装及配置指引(Windows)
  7. 深入理解Java虚拟机-HotSpot虚拟机对象探秘
  8. Python - 异常处理初步
  9. 遇到的问题之"项目启动加载不出页面"
  10. catkin编译系统