LeetCode[中等] 49.字母异位词分组

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

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

思路:

new Dictionary<string, List<string>>() 存储数据,key为排序之后的字符串

对每个字符串进行排序,若是相同,则放进字典的value中

str.ToCharArray() 将string转换成字符数组array,用Array.Sort(array),对字符串数组进行排序,最后判断字典中是否有该key,有则存入;没有,则新建一个key,存入

public class Solution {public IList<IList<string>> GroupAnagrams(string[] strs) {var dict = new Dictionary<string, List<string>>();foreach(var str in strs){var array = str.ToCharArray();Array.Sort(array);var sortedStr = new string(array);if(dict.ContainsKey(sortedStr))dict[sortedStr].Add(str);elsedict.Add(sortedStr, new List<string>(){str});}return new List<IList<string>>(dict.Values);}}

复杂度分析

  • 时间复杂度:O(nklogk),其中 n 是数组 strs 的长度,k 是数组 strs 中的字符串的最大长度。需要遍历 n 个字符串,每个字符串的排序和更新哈希表共需要 O(klogk) 的时间,总时间复杂度是 O(nklogk)。
  • 空间复杂度:O(nk),其中 n 是数组 strs 的长度,k 是数组 strs 中的字符串的最大长度。哈希表需要存储数组 strs 中的全部字符串,需要 O(nk) 的空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/426226.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年9月18日历史上的今天大事件早读

1043年9月18日 范仲淹实行改革 1393年9月18日 “活财神”沈万三逝世 1783年9月18日 瑞士著名数学家欧拉逝世 1851年9月18日 《纽约时报》创刊 1903年9月18日 清末爱国将领冯子材逝世 1917年9月18日 护法战争爆发 1931年9月18日 “九一八”事变爆发 1936年9月18日 阎锡山…

澳元/美元价格:进一步上涨看向美联储

澳元/美元在0.6700关口附近波动不定。美元因美国经济数据强劲而重新获得上行动力。接下来&#xff0c;澳大利亚将公布西太平洋领先指数。 美元的再度走强使风险敏感资产承压&#xff0c;澳元/美元周二维持在0.6700关口上方的小幅区间内。尽管美元反弹&#xff0c;澳元仍成功维…

深入解析代理模式:静态代理、JDK 动态代理和 CGLIB 的全方位对比!

代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供了对象的替身&#xff0c;即代理对象来控制对实际对象的访问。通过代理对象&#xff0c;可以在不修改目标对象的情况下&#xff0c;扩展或控制其功能。例如&#xff0c;代理模式可以用于延…

6个Python小游戏项目源码【免费】

6个Python小游戏项目源码 源码下载地址&#xff1a; 6个Python小游戏项目源码 提取码: bfh3

Python异常处理:自定义异常②

文章目录 1. 什么是自定义异常&#xff1f;2. 为什么需要自定义异常&#xff1f;3. 如何定义自定义异常&#xff1f;3.1 基本自定义异常3.2 带详细信息的自定义异常3.3 自定义异常的继承层次 4. 使用自定义异常4.1 抛出自定义异常4.2 捕获自定义异常 5. 自定义异常的应用场景5.…

【C/C++】涉及string类的经典OJ编程题

【C/C】涉及string类的经典OJ编程题 一. 把字符串转化成整数&#xff08;atoi&#xff09;解法一&#xff1a;&#xff08;不用long&#xff09;完整代码&#xff1a;解法二&#xff1a;&#xff08;用long&#xff09; 二.字符串相加代码实现&#xff08;含注释&#xff09;&a…

【UE5】使用2DFlipbook图作为体积纹理,实现实时绘制体积纹理【第一篇】

这是一篇对“Creating a Volumetric Ray Marcher-Shader Bits”的学习心得 文章时间很早&#xff0c;因此这里针对UE5对原文做出兼容性修正&#xff08;为避免累赘不做出注明。链接如上&#xff0c;有需要自行学习&#xff09; 以及最后对Custom做可能的蓝图移植&#xff0c;做…

【Android Studio】2024.1.1最新版本AS调试老项目(老版AS项目文件、旧gradle)导入其他人的项目

文章目录 实验环境开始修改项目文件1. 删除.gradle及.idea两个文件夹2.修改SDK路径&#xff08;本地SDK存放路径&#xff09;3.修改gradle版本4.修改gradle插件版本&#xff08;AGP&#xff09;5.修改JDK版本 实验环境 Android Studio 版本 项目版本 开始修改项目文件 1. 删…

docker可视化管理工具推荐!docker.ui

正式介绍之前&#xff0c;可以看下这款工具的截图&#xff0c;开源地址在文末提供&#xff1a; docker.ui&#xff1a;一个可视化的docker管理工具 docker是一个开源的容器平台&#xff0c;可以让开发者和运维人员快速地构建、运行和部署应用。 docker的优势在于它可以实现应…

机器人的动力学——牛顿欧拉,拉格朗日,凯恩

机器人的动力学推导方法有很多&#xff0c;常用得有牛顿&#xff0c;拉格朗日&#xff0c;凯恩等方法&#xff0c;接下来&#xff0c;简单说说他们之间的使用。注&#xff1a;这里不考虑怎么来的&#xff0c;只说怎么应用。 参考1&#xff1a;4-14动力学分析方法-牛顿—欧拉方…

网络设备登录——《路由与交换技术》实验报告

目录 一、实验目的 二、实验设备和环境 三、实验记录 1.通过 Console 登录 步骤1:连接配置电缆。 步骤2:启动PC,运行超级终端。 步骤3:进入Console 配置界面 2.通过 Telnet 登录 步骤1:通过 Console 接口配置 Telnet 用户。 步骤2:配置 super 口令 步骤3:配置登录欢迎…

【数据仓库】数据仓库常见的数据模型——维度模型

文章部分图参考自&#xff1a;多维数据模型各种类型&#xff08;星型、雪花、星座、交叉连接&#xff09; - 知乎 (zhihu.com) 文章部分文字canla一篇文章搞懂数据仓库&#xff1a;四种常见数据模型&#xff08;维度模型、范式模型等&#xff09;-腾讯云开发者社区-腾讯云 (ten…

Comsol 利用多孔材料填充复合吸声器,拓宽低频完美吸声

参考文献&#xff1a;Cheng B , Gao N , Huang Y ,et al.Broadening perfect sound absorption by composite absorber filled with porous material at low frequency:[J].Journal of Vibration and Control, 2022, 28(3-4):410-424.DOI:10.1177/1077546320980214. 为了提高低…

MySQL基于GTID同步模式搭建主从复制

系列文章目录 rpmbuild构建mysql5.7.42版本的rpm包 文章目录 系列文章目录一、mysql-5.7.42RPM包构建二、同步模式分类介绍1.异步同步模式2.半同步模式2.1.实现半同步操作流程2.2.半同步问题总结2.3.半同步一致性2.4.异步与半同步对比 3.GTID同步 三、GTID同步介绍1.gtid介绍2…

C语言程序设计(进阶)

行到水穷处&#xff0c;坐看云起时。 中秋快乐呀&#xff01; 数据在内存中的存储 1.数据类型的介绍 &#xff08;1&#xff09;基本的内置类型&#xff1a; char //字符数据类型 short //短整型 int //整型 long //长整型 …

【零基础速领】全套AI大模型入门指南(学习路线+PDF文档+面试)

已经有越来越多的人开始认识到学习AI的重要性了&#xff01;可能是自主的认知&#xff0c;也可能是被身边的人卷的。总之&#xff0c;可能已经没有人不知道人工智能这个概念了&#xff0c;可能人人都已知道ChatGPT了&#xff0c;哪怕他没有用过。 ChatGPT发布后&#xff0c;很…

nginx实现https安全访问的详细配置过程

文章目录 前言什么是 HTTP&#xff1f;什么是 HTTPS&#xff1f;HTTP 和 HTTPS 的区别为什么 HTTPS 被称为安全的&#xff1f;配置过程配置自签名证书 前言 首先我们来简单了解一下什么是http和https以及他们的区别所在. 什么是 HTTP&#xff1f; HTTP&#xff0c;全称为“超…

LeetCode_sql_day24(1212.查询球队积分)

描述 表: Teams ------------------------- | Column Name | Type | ------------------------- | team_id | int | | team_name | varchar | ------------------------- team_id 是该表具有唯一值的列。 表中的每一行都代表一支独立足球队。表: Matches…

【Linux】探索文件I/O奥秘,解锁软硬链接与生成动静态库知识

目录 1、C文件接口 1.1什么是当前路径&#xff1f; 1.2程序默认打开的文件流&#xff1a; 2、系统文件I/O 2.1.接口介绍&#xff1a; 2.1.1open&#xff1a; 参数讲解; flags如何实现一个参数就可以有多个参数传参的效果&#xff1f; open函数的返回值&#xff1a; 3…

CentOS入门必备基础知识

CentOS&#xff08;Community ENTerprise Operating System&#xff09;是基于红帽企业版Linux&#xff08;RHEL&#xff09;的免费开源Linux发行版&#xff0c;它以稳定、安全和可靠性著称&#xff0c;被广泛应用于服务器环境。以下是CentOS入门时你必须掌握的基础知识。 1. C…