news 2026/9/4 18:01:56

DeepSeek专家 LeetCode 49. 字母异位词分组 Java实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSeek专家 LeetCode 49. 字母异位词分组 Java实现

以下是 LeetCode 49. 字母异位词分组 的 Java 实现,采用 哈希表 + 排序 的方法。


思路

字母异位词排序后得到的字符串相同,因此可以将排序后的字符串作为哈希表的键,原始字符串作为值存入对应的列表。遍历所有字符串,最终哈希表中每个键对应的列表即为一组字母异位词。


代码

importjava.util.*;classSolution{publicList<List<String>>groupAnagrams(String[]strs){Map<String,List<String>>map=newHashMap<>();for(Stringstr:strs){// 将字符串转为字符数组并排序,得到统一键char[]chars=str.toCharArray();Arrays.sort(chars);Stringkey=newString(chars);// 将原始字符串加入对应键的列表List<String>list=map.getOrDefault(key,newArrayList<>());list.add(str);map.put(key,list);}returnnewArrayList<>(map.values());}}

复杂度分析

· 时间复杂度:O(n * k log k),其中 n 是字符串数量,k 是字符串的最大长度。每个字符串排序需要 O(k log k),遍历所有字符串需要 O(n)。
· 空间复杂度:O(n * k),哈希表存储所有字符串,排序过程中还需要临时字符数组。


补充说明

· 如果字符串长度很大,可以用 字符计数编码(如 a2b3c1)代替排序,将时间复杂度优化到 O(n * k),但排序方法更直观且通常足够。
· map.values() 返回的是 Collection<List>,需要包装成 ArrayList 返回。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 18:01:32

【每日计划与反思】2026.9.2

一. 计划&#xff1a;1. L1课程完成&#xff08;1*&#xff09;原理解读2. 视频看完&#xff08;1*&#xff09;3. 整理上线东西4. jvm知识学习&#xff0c;二. 计划反思&#xff1a;1. 完成&#xff0c;原理解读70%2. 60%3. 完成4. 完成三. 感悟&#xff1a;1. 同一时间段要专…

作者头像 李华
网站建设 2026/9/4 18:00:50

【单片机毕业设计】基于 STM32/51 单片机的声光报警型植物智能养护系统设计 基于单片机与手机 APP 的农田土壤环境智能调控设备开发(020606)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机&#xff0c;Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/9/4 18:00:44

多相BUCK电源PCB设计:从单相复制到四相的布线要点

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 17:58:18

用 git bisect 二分定位 Bug:告别盲翻提交历史

如果说有一个命令让我在第一次用完之后&#xff0c;脑子里冒出来的第一句话是“这招也太好用了吧”&#xff0c;那一定是git bisect。这不是什么新插件&#xff0c;也不需要额外安装&#xff0c;Git 本身就自带&#xff0c;只是绝大多数人日常只把它当作提交代码的工具&#xf…

作者头像 李华
网站建设 2026/9/4 17:55:58

零基础学Python · 第 9 课|转义字符与数据类型转换

" /t \n是别具一格记号&#xff1b;int()、str()、float()承担类型间的跨越。9.1 转义字符&#xff1a;反斜杠的暗号引号具备特殊身份, 其作用是包裹字符串, 换行无法直接录入到一行代码之中, 转义字符就是专门用来解决那些“写不进去或者会产生歧义”情况的暗号, 具体表现…

作者头像 李华