news 2026/4/29 16:06:29

LeetCode 49. 字母异位词分组(HashMap+排序,含方法注解)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 49. 字母异位词分组(HashMap+排序,含方法注解)

# LeetCode 49. 字母异位词分组

## 题目

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

**字母异位词**:由相同的字母组成,只是排列顺序不同的字符串。

**示例:**

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


**提示:**
- 1 ≤ strs.length ≤ 10^4
- 0 < strs[i].length ≤ 100

---

## 一、思路

**核心规律**:字母异位词排序后的字符串相同

- `"eat"` → 排序 → `"aet"`
- `"tea"` → 排序 → `"aet"`
- `"ate"` → 排序 → `"aet"`

**算法步骤**:
1. 创建 `Map<String, List<String>>`
2. 遍历每个字符串,排序后作为 key
3. 将原字符串放入 key 对应的 list 中
4. 返回 map 中所有 value

---

## 二、举例演示

输入:`["eat", "tea", "tan", "ate", "nat", "bat"]`

过程:"eat" → "aet" → {"aet": ["eat"]}
"tea" → "aet" → {"aet": ["eat","tea"]}
"tan" → "ant" → {"aet":["eat","tea"], "ant":["tan"]}
"ate" → "aet" → {"aet":["eat","tea","ate"], "ant":["tan"]}
"nat" → "ant" → {"aet":[...], "ant":["tan","nat"]}
"bat" → "abt" → {"aet":[...], "ant":[...], "abt":["bat"]}


输出:`[["eat","tea","ate"], ["tan","nat"], ["bat"]]`

---

## 三、核心代码

class Solution { public List<List<String>> groupAnagrams(String[] strs) { // 创建哈希表,键为排序后的字符串,值为异位词列表 Map<String, List<String>> map = new HashMap<>(); // 遍历每个字符串 for (String s : strs) { // 将字符串转为字符数组,以便排序 char[] chars = s.toCharArray(); // 对字符数组排序,异位词排序后结果相同 Arrays.sort(chars); // 将排序后的字符数组转回字符串,作为哈希表的键 String key = new String(chars); // 如果当前键不存在,则先创建一个空列表存入 // 等价写法:if (!map.containsKey(key)) map.put(key, new ArrayList<>()); map.putIfAbsent(key, new ArrayList<>()); // 获取该键对应的列表,并将原始字符串加入 map.get(key).add(s); } // 返回哈希表中所有值(即分组后的列表集合) return new ArrayList<>(map.values()); } }

## 四、方法注解

方法所属类作用
toCharArray()String将字符串转换为字符数组
Arrays.sort()Arrays对数组排序(升序)
putIfAbsent()Map如果 key 不存在则存入,否则不做操作
get()Map根据 key 获取 value
add()List向列表中添加元素
values()Map返回所有 value 的集合
new ArrayList<>(Collection)ArrayList用集合创建新的 ArrayList
put()Map存入键值对
containsKey()Map判断 key 是否存在
keySet()Map获取所有 key 的集合
remove()Map删除指定 key
size()Map返回键值对数量
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 16:04:15

Outfit字体终极指南:9种字重免费开源,打造完美品牌视觉系统

Outfit字体终极指南&#xff1a;9种字重免费开源&#xff0c;打造完美品牌视觉系统 【免费下载链接】Outfit-Fonts The most on-brand typeface 项目地址: https://gitcode.com/gh_mirrors/ou/Outfit-Fonts Outfit字体是一款专为品牌自动化设计的开源无衬线字体&#xf…

作者头像 李华
网站建设 2026/4/29 16:03:32

3种创新方案永久告别IDM激活烦恼:从原理到实践的完整指南

3种创新方案永久告别IDM激活烦恼&#xff1a;从原理到实践的完整指南 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script Internet Download Manager&#xff08;IDM…

作者头像 李华
网站建设 2026/4/29 15:57:30

如何快速掌握DeepLabV3Plus-Pytorch:3步实现图像语义分割实战

如何快速掌握DeepLabV3Plus-Pytorch&#xff1a;3步实现图像语义分割实战 【免费下载链接】DeepLabV3Plus-Pytorch Pretrained DeepLabv3 and DeepLabv3 for Pascal VOC & Cityscapes 项目地址: https://gitcode.com/gh_mirrors/de/DeepLabV3Plus-Pytorch 想要在PyT…

作者头像 李华
网站建设 2026/4/29 15:56:46

WxMsgDump:开源微信聊天记录导出工具完全指南

WxMsgDump&#xff1a;开源微信聊天记录导出工具完全指南 【免费下载链接】WxMsgDump 开源的导出微信聊天记录的程序 项目地址: https://gitcode.com/gh_mirrors/wx/WxMsgDump 微信作为中国最流行的即时通讯工具&#xff0c;承载着用户大量的重要对话和历史记录。WxMsgD…

作者头像 李华
网站建设 2026/4/29 15:55:09

7-Zip:你的免费数字空间整理大师,让文件压缩变得简单高效

7-Zip&#xff1a;你的免费数字空间整理大师&#xff0c;让文件压缩变得简单高效 【免费下载链接】7z 7-Zip Official Chinese Simplified Repository (Homepage and 7z Extra package) 项目地址: https://gitcode.com/gh_mirrors/7z1/7z 想象一下&#xff0c;你的电脑硬…

作者头像 李华
网站建设 2026/4/29 15:53:33

BiliTools:跨平台B站媒体下载与弹幕处理的专业解决方案

BiliTools&#xff1a;跨平台B站媒体下载与弹幕处理的专业解决方案 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

作者头像 李华