发布时间:2026/8/5 12:07:42
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/8/5 12:07:42

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

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

2026/8/5 12:07:42

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/8/5 12:02:42

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

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

2026/8/5 13:07:45

抗凋亡BCL-2家族蛋白:如何从调控网络走向精准治疗?

简述:内源性凋亡通路的异常调控是肿瘤发生与耐药的核心环节之一。BCL-2家族蛋白构成复杂的相互作用网络,其中抗凋亡成员(BCL-2、BCL-XL、MCL-1、BCL-W、BCL2A1)的过表达或功能获得是多种恶性肿瘤的重要生存依赖。本文以"调控…

2026/8/5 13:07:45

Bcl-2:其在肿瘤病理诊断与临床评估中的价值几何?

简述:内源性凋亡通路的异常调控是肿瘤发生与耐药的核心环节之一。BCL-2家族蛋白构成复杂的相互作用网络,其中抗凋亡成员(BCL-2、BCL-XL、MCL-1、BCL-W、BCL2A1)的过表达或功能获得是多种恶性肿瘤的重要生存依赖。本文以"调控…

2026/8/5 13:07:45

终极STL转STEP完整指南:5分钟解锁CAD设计自由

终极STL转STEP完整指南:5分钟解锁CAD设计自由 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在3D设计和制造的世界里,你是否曾为无法编辑STL文件而烦恼?stl…

2026/8/5 13:07:45

VC++2010安装与C语言开发环境配置全指南

1. 项目概述:为什么今天还要用VC2010? 如果你是一位刚接触C语言编程的在校学生,或者是一位需要维护、编译遗留项目代码的开发者,那么“Visual C 2010”这个名字对你来说一定不陌生。它可能出现在你的课程要求里,也可能…

2026/8/5 13:07:45

CaImAn终极指南:如何快速上手大规模钙成像数据分析

CaImAn终极指南:如何快速上手大规模钙成像数据分析 【免费下载链接】CaImAn Computational toolbox for large scale Calcium Imaging Analysis, including movie handling, motion correction, source extraction, spike deconvolution and result visualization. …

2026/8/5 13:02:45

UE5回合制游戏摄像机系统:5个避坑技巧与蓝图实战

1. 项目概述:为什么回合制游戏的摄像机控制是个“技术活”?做回合制游戏,尤其是用UE5这种级别的引擎,很多开发者容易把精力全放在战斗逻辑、技能特效或者角色养成上,觉得摄像机控制嘛,不就是个“跟拍”的活…

2026/8/5 3:13:11

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/5 0:01:34

三升四,比成绩下滑更可怕的,是孩子开始「认命」

分水岭上,最难的不是翻过去,是孩子不想翻了。八月初了。这两个字,对三升四的家长来说,比任何闹钟都让人清醒。最近的家长群里,气氛明显不一样了。一升二的在关心兴趣班,二升三的在讨论要不要提前学英语。而…

2026/8/5 0:01:34

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:01:34

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/3 22:40:58

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/3 13:26:41

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/3 16:43:13

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…