当前位置: 首页 > news >正文

【Python刷力扣hot100】49. Group Anagrams

问题

给定一个字符串数组 strs,将字母异位词组合在一起。返回的答案可以按任意顺序排列。

字母异位词(Anagram):由相同字母按照不同顺序排列组成的字符串,例如 “listen” 和 “silent”、“eat” 和 “tea” 均为字母异位词。

例1:

输入: strs = [“eat”,“tea”,“tan”,“ate”,“nat”,“bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]

  • 解释:
    • There is no string in strs that can be rearranged to form “bat”.
    • The strings “nat” and “tan” are anagrams as they can be rearranged to form each other.
    • The strings “ate”, “eat”, and “tea” are anagrams as they can be rearranged to form each other.

例2:

输入: strs = [“”]
输出: [[“”]]

例3:

输入: strs = [“a”]
输出: [[“a”]]

约束条件:

  • 字符串数组 strs 的长度满足:1 ≤ strs.length ≤ 10⁴(即数组中至少有 1 个字符串,最多不超过 10000 个字符串)
  • 数组中每个字符串 strs[i] 的长度满足:0 ≤ strs [i].length ≤ 100(即单个字符串可能为空字符串,最长不超过 100 个字符)
  • 字符串 strs[i] 仅由小写英文字母组成(无大写字母、数字、符号等其他字符)

解:哈希表

  1. 设原始数据在list1中,可以把每个单词按字母排序,显然所有的字母异位词排序后会得到相同的单词。
  2. 把该集合存入哈希表(key:排序后的单词。value:原始单词)。但是相同的key只能有1个,所以value是一个存储了原始单词的list
  3. 遍历所有key,分别把每个key对应的value存入list2。list2就是我们要的结果

在这里插入图片描述

时间复杂度O(nklogk)O(nklogk)O(nklogk)nnn是字符串数量,kkk是字符串的最大长度。需要进行nnn次排序操作,一次排序操作的时间复杂度是O(klogk)O(klogk)O(klogk)

空间复杂度O(nk)O(nk)O(nk):随着数组规模的增大,我们使用哈希表的空间也会等比增大,需要额外占用的空间也会增大。

class Solution:def groupAnagrams(self, strs: List[str]) -> List[List[str]]:# 创建哈希表,key为排序后的字符串,value为原始字符串列表anagram_dict = {}for s in strs:# 对字符串按字母排序,作为哈希表的keysorted_str = ''.join(sorted(s))# 如果key已存在,将当前字符串添加到对应列表if sorted_str in anagram_dict:anagram_dict[sorted_str].append(s)# 如果key不存在,创建新的列表并添加当前字符串else:anagram_dict[sorted_str] = [s]# 将哈希表中的所有值(列表)组成新列表返回return list(anagram_dict.values())

参考

https://leetcode.cn/problems/group-anagrams

http://www.dtcms.com/a/453360.html

相关文章:

  • 招聘网站大全专业的企业进销存软件定制
  • 绿色学校网站模板高明网站建设报价
  • Ubuntu 22.04 + Ryu/Mininet:跨越 Python 3.10 依赖“死亡三角”的完美配置指南
  • AI智能体(Agent)大模型入门【6】--编写fasteAPI后端请求接口实现页面聊天
  • 广西 南宁 微信微网站开发虚拟主机使用教程
  • 电子商务网站开发 当当网网站优化关键词怎么做
  • 学习日报 20251007|深度解析:基于 Guava LoadingCache 的优惠券模板缓存设计与实现
  • 什么是MOE?
  • 大模型-扩散模型(Diffusion Model)原理讲解(4
  • 【深度学习新浪潮】入门Flash Attention:从原理到Python手搓实现
  • 不做“KPI牛马“,回归真生活——双节沉思录
  • Java接口中实现多线程并行处理,大数据量查询实战,成倍提效、性能分析,笔记01
  • AI学习日记——参数的初始化
  • 数字信号处理 第七章(FIR数字滤波器设计)
  • 网站建设公司实力网站建设死人接单
  • 河南住房与建设厅网站杭州网站建设交易
  • 岳池建设局网站什么是网络设计的前提
  • GDB Stub定义及命名由来解析
  • 男人最爱上的做网站网页制作开版费
  • FreeRTOS_API模块综合应用篇(八)
  • tuchuang_myfilesshare文件列表_共享文件
  • GJOI 10.4/10.5 题解
  • C语言入门教程(第2讲):数据类型与变量详解与实战讲解
  • 哪些网站建设公司wordpress悬浮联系表
  • 5g互联如何取消网站备案中山seo代理商
  • 生成式人工智能对学习生态的重构:从“辅助工具”到“依赖风险”的平衡难题
  • 电商推广联盟大型网站技术架构演进与性能优化
  • short-term memory 和long-term memtory有什么区别
  • 公司网站建设与维护工作计划网站建设背景及意义
  • 技术支持上海网站建设广州做网站哪个平台好