LeetCode 49.字母异位词分组 (HashMap + 字符串排序)

发布时间:2026/11/14 16:22:19

LeetCode 49.字母异位词分组 (HashMap + 字符串排序) class Solution { // 方法定义返回双层字符串列表存储所有异位词分组 public ListListString groupAnagrams(String[] strs) { // 1.创建Map容器key排序字符串(分组标签)value原始单词列表(分组内容) MapString, ListString map new HashMap(); // 2.增强for遍历每一个原始单词 for(String str : strs) { // 3.字符串转字符数组为排序做准备 char[] s str.toCharArray(); // 4.字符数组排序异位词排序后字符串一致 Arrays.sort(s); // 5.排序数组转回字符串作为唯一分组key String key new String(s); // 6.判断当前分组已存在 if(map.containsKey(key)){ // 7.取出对应分组加入当前原始单词 map.get(key).add(str); }else{ // 8.分组不存在新建空列表 ListString temp new ArrayList(); // 9.将当前第一个单词加入新列表 temp.add(str); // 10.存入Map完成新建分组 map.put(key, temp); } } // 11.取出所有分组类型转换后返回结果 return new ArrayList(map.values()); } }逐轮运行示例演示第1轮 str eat → 排序keyaet → 无分组新建列表 [eat] 存入map第2轮 str tea → 排序keyaet → 分组存在追加为 [eat,tea]第3轮 str tan → 排序keyant → 无分组新建列表 [tan] 存入map最终输出[[eat,tea,ate],[tan,nat],[bat]]一、核心算法思路利用 HashMap 键值对映射特性实现分组整体时间复杂度接近 O(n logn)为本题最优解法遍历每一个字符串将字符串排序排序后的字符串作为统一分组 keykey 不存在则新建分组列表key 存在则将原字符串追加进对应分组遍历结束后取出 Map 所有 value转为 List 集合返回完成异位词分组。前置基础Map 底层基础定义MapK, VK Key键用来查找的标识V Value值你想要保存的数据判断规则你打算拿什么东西当「查找标签」K 就设为什么类型你最终需要取出什么数据V 就设为什么类型。举例对照两道题 1两数之和用数字找下标 →MapInteger, Integer2字母异位词分组用排序后的字符串找一组单词 →MapString, ListString一语法编译类错误核心根源Java 严格区分大小写HashMap 创建语法写错错误MapString, ListString map new HashMap();标准固定语法MapK,V 变量 new HashMap();二逻辑思路理解误区混淆 Map 的 key 与 value 存储内容key排序后的标准字符串仅用来分组标记不存入结果列表valueListString存储原始异位单词分不清数组与 List 特性String[]长度固定不能自动扩容ArrayList动态列表可无限.add()追加元素不懂为什么最后要用new ArrayList(map.values())返回map.values()类型是Collection和要求返回的List不兼容必须通过 ArrayList 构造转换二、Java 专属工具方法积累1. String 字符串方法① str.toCharArray()作用将字符串拆分为char[]字符数组字符串不可排序只有字符数组能排序用法char[] 字符数组 字符串变量.toCharArray();String str eat; char[] arr str.toCharArray(); // arr {e,a,t}② new String (char 数组)作用把排好序的 char 数组重新转回字符串作为 HashMap 分组 key用法String key new String(字符数组);char[] arr {a,e,t}; String key new String(arr); // key aet2. Arrays 工具类需导入import java.util.*;Arrays.sort (char [] 数组)作用对字符数组按字母 ASCII 升序排序异位词排序后完全相同用法Arrays.sort(字符数组);char[] arr {t,e,a}; Arrays.sort(arr); // 排序后 {a,e,t}3. List / ArrayList 方法① new ArrayList()作用创建空的动态字符串列表标准语法ListString 变量名 new ArrayList();② list.add (元素)作用向列表尾部追加元素自动扩容4. HashMap 核心三方法解题高频① map.get(key)作用根据 key 取出对应的 value仅支持 1 个参数用法ListString group map.get(key);② map.put(key, value)作用向哈希表存入一组键值对key 重复会覆盖旧 value本题用法map.put(排序字符串, 分组列表);5. map.values()作用获取 Map 中所有 value返回Collection集合不含 key场景最后统一取出所有分组用于返回结果三、通用固定模板积累创建 HashMap 模板MapK类型,V类型 map new HashMap();创建字符串列表模板ListString list new ArrayList();字符串排序转 key 完整固定流程char[] arr str.toCharArray(); Arrays.sort(arr); String key new String(arr);Map 分组结果返回模板return new ArrayList(map.values());
延伸阅读

更多相关文章

2026/10/31 0:04:48

从CTF实战解析文件上传漏洞:绕过防护与安全防御全攻略

1. 项目概述:从一道CTF题看文件上传漏洞的攻防本质最近在复盘一些经典的网络安全竞赛题目,特别是关于文件上传漏洞的,发现“[强网杯 2019]Upload”这道题非常有意思。它不像一些直白的题目,给你一个明显有缺陷的上传点&#xff0c…

2026/11/10 19:08:34

13、Rust程序设计语言——认识Cargo和Crates.io

目录1. 采用发布配置自定义构建2. 将crate发布到Crates.io2.1 编写有用的文档注释2.1.1 常用章节2.1.2 文档注释作为测试2.1.3 注释包含项的结构2.2 导出实用的公有API2.3 创建crates.io账号2.4 向新crate添加元数据2.5 发布到crates.io2.6 发布现有crate的新版本2.7 使用cargo…

2026/11/13 8:19:32

HarmonyOS NEXT 企业级记账APP:企业级项目总结与后续规划

企业级项目总结与后续规划 本文是《HarmonyOS NEXT 企业级开发实战:30篇打造智能记账APP》系列的第 30 篇,对应 Git Tag v1.0.0。总结 HarmonyLedger 30 篇完整成果,规划后续版本路线图(云同步、AI、多端)。 前言 本篇…

2026/11/14 16:22:13

你真的知道安监局低压电工证复审怎么在网上查询吗

你真的知道安监局低压电工证复审怎么在网上查询吗 你是不是也遇到过这种情况:手里拿着低压电工证,眼看快到期了,却不知道去哪报名复审,怕被中介坑了钱还办不了事?别急,今天咱们就来聊聊 安监局低压电工证复审 这事,从 网上查询…

2026/11/14 16:22:13

常德电工证报名方式多久拿证?证书过期了不知道怎么复审延期

常德电工证报名方式多久拿证?证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期,你是不是也遇到过这种情况?特种作业证不是一劳永逸的,每3-5年就要复审一次,否则证书作废,直接影响工作和项目参与资格。如果你正准备报考常德电工证,或者已…

2026/11/14 16:22:13

现在电工证是哪种通过率揭秘:工地太忙根本没时间复习考试怎么办?

现在电工证是哪种通过率揭秘:工地太忙根本没时间复习考试怎么办? 工地太忙根本没时间复习考试,这是很多一线电工的真实写照。你是不是也常常因为工地上活太多,没时间复习电工证考试内容,导致考试频频失利?别急,今天咱们就来聊聊【现在电工证是哪种】这…

2026/11/13 22:33:32

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/14 0:06:39

土木特种工考证官方报名入口怎么找 之前考的证在外省能不能转过来

土木特种工考证官方报名入口怎么找 之前考的证在外省能不能转过来 之前考的证在外省能不能转过来?这个问题我太熟悉了,作为一名干了十几年的特种作业证书办理从业者,每年都会遇到不少像你一样在外地考了证,回来却发现无法直接使用的学员。别急,今天我就…

2026/11/14 0:06:39

电工证要多久多钱保姆级教程:工地太忙根本没时间复习考试

电工证要多久多钱保姆级教程:工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,你不是一个人。在信阳浉河区,很多刚进入工地的电工都面临这样的困境:工作强度大,时间碎片化,根本没有系统复习考试的机会。但电工证是上岗的硬门槛,…

2026/11/13 22:32:11

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/13 12:14:39

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑