首页/新闻资讯/正文详情

LeetCode Hot100(2.字母异位词分组)

发布时间:2026/9/29 17:34:04 来源:云帆数科 栏目:资讯中心
LeetCode Hot100(2.字母异位词分组)
2.字母异位词分组题目给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。示例 1:输入:strs [eat, tea, tan, ate, nat, bat]输出:[[bat],[nat,tan],[ate,eat,tea]]解释在 strs 中没有字符串可以通过重新排列来形成bat。字符串nat和tan是字母异位词因为它们可以重新排列以形成彼此。字符串ateeat和tea是字母异位词因为它们可以重新排列以形成彼此。示例 2:输入:strs []输出:[[]]示例 3:输入:strs [a]输出:[[a]]提示1 strs.length 1040 strs[i].length 100strs[i]仅包含小写字母解法一排序思路首先要知道如何判断两个词是字母异位词通过观察可以看到两个字母异位词的字母都是一样的因此两个字母异位词通过sort()函数进行排列后的字符串是一样的。将排列后的字符串作为键其特征对应的字符串则作为值存入到哈希表中最后输出。代码class Solution { public: vectorvectorstring groupAnagrams(vectorstring strs) { unordered_mapstring,vectorstring mp; for(string str:strs){ string key str; sort(key.begin(),key.end()); mp[key].emplace_back(str); } vectorvectorstring ans; for(auto it mp.begin();it !mp.end();it){ ans.emplace_back(it-second); } return ans; } };注意emplace_back()它是std::vector的成员函数用于在容器尾部添加元素。与push_back()的区别push_back()需要先构造对象再将其拷贝或移动到容器中而emplace_back()直接在容器尾部的内存位置原地构造对象避免了额外的拷贝或移动操作。在算法题中当向vector中插入复杂对象如string、自定义结构体时使用emplace_back()通常比push_back()性能更好解法二计数由于互为字母异位词的两个字符串包含的字母相同因此两个字符串中的相同字母出现的次数一定是相同的故可以将每个字母出现的次数使用字符串表示作为哈希表的键。由于字符串只包含小写字母因此对于每个字符串可以使用长度为 26 的数组记录每个字母出现的次数。需要注意的是在使用数组作为哈希表的键时不同语言的支持程度不同因此不同语言的实现方式也不同。代码// 定义 lambda 表达式作为自定义哈希函数用于计算 arrayint, 26 的哈希值 auto arrayHash [fn hashint{}] (const arrayint, 26 arr) - size_t { // 使用 accumulate 遍历数组通过左移和异或操作组合每个元素的哈希值 return accumulate(arr.begin(), arr.end(), 0u, [](size_t acc, int num) { return (acc 1) ^ fn(num); }); }; // 声明哈希表键为字母频次数组值为字符串向量。传入初始桶数 0 和自定义哈希函数 unordered_maparrayint, 26, vectorstring, decltype(arrayHash) mp(0, arrayHash); for (string str: strs) { arrayint, 26 counts{}; // 初始化长度为 26 的数组用于统计字母频次 int length str.length(); for (int i 0; i length; i) { counts[str[i] - a] ; // 将字符映射到 0-25 索引并累加频次 } mp[counts].emplace_back(str); // 以频次数组为键将当前字符串加入对应的列表中 } vectorvectorstring ans; // 初始化结果数组 for (auto it mp.begin(); it ! mp.end(); it) { ans.emplace_back(it-second); // 遍历哈希表将每个分组值加入结果数组 } return ans; // 返回最终的分组结果

相关推荐

Java学习进程8
Java学习进程8

Java学习进程8 链表 继上篇明确了动态数组具备动态扩容,取值快等优势,但存在添加删除数据速度较慢等缺陷,链表的数据结构恰好弥补了这一短板。 链表原理 链表是不连续的线性存储结构,依靠每个节点内部的引用(指针&… · 2026/9/29 17:33:55

Claude Code被曝重大隐患,揭开了算法安全的帷幕
Claude Code被曝重大隐患,揭开了算法安全的帷幕

目录一、Claude Code很厉害,但是要小心二、如何验证算法的安全性?三、番瓜AI多模态生成算法四、江苏迅高智能科技一、Claude Code很厉害,但是要小心 Claude Code (简称CC) 就是全球第一的AI编程 Agent。我想现在很多人都会认可这句话&#x… · 2026/9/20 11:38:15

Kamailio async模块
Kamailio async模块

ASYNC 模块 作者:Daniel-Constantin Mierla micondagmail.com 编辑:Daniel-Constantin Mierla micondagmail.com 版权所有 © 2011-2016 asipto.com 目录 管理员指南 概述依赖项 Kamailio 内置模块外部库与应用 配置参数 workers(整数… · 2026/9/20 12:38:28

Spingboot启动预热的实现
Spingboot启动预热的实现

启动预热的适用场景启动预热适合以下情况:数据主要来自第三方接口,无法直接从本地数据库读取。第三方接口响应较慢,首次访问容易超时。一个页面需要调用多个第三方接口或逐项查询。数据读取频繁,但变化不频繁。希望服务启动后&… · 2026/9/29 6:52:37

Understanding Driving Risks using Large Language Models: Toward Elderly Driver Assessment
Understanding Driving Risks using Large Language Models: Toward Elderly Driver Assessment

文章主要内容总结 本文研究了多模态大语言模型(具体为ChatGPT-4o)利用静态行车记录仪图像进行类人交通场景解读的潜力,重点聚焦与老年司机评估相关的三项任务:交通密度评估、交叉口可见性评估和停车标志识别。这些任务需上下文推理而非简单目标检测。研究采用零样本、少样… · 2026/9/29 12:28:25

Leveraging Large Language Models for Classifying App Users‘ Feedback
Leveraging Large Language Models for Classifying App Users‘ Feedback

文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)解决应用用户反馈分类的挑战,传统方法依赖有监督机器学习,但受限于标注数据集的规模和质量。研究通过三个核心实验评估了4种先进LLMs(GPT-3.5-Turbo、GPT-4o、Flan-T5、Llama3-70b)的性能: LLMs在用户反馈分类中的基… · 2026/9/29 13:54:46

Using Large Language Models for Legal Decision-Making in Austrian Value-Added Tax Law: An Experim...
Using Large Language Models for Legal Decision-Making in Austrian Value-Added Tax Law: An Experim...

文章主要内容总结 本文通过实验评估了大型语言模型(LLMs)在奥地利及欧盟增值税(VAT)法框架下辅助法律决策的能力。研究聚焦于两种提升LLM性能的方法——微调(fine-tuning)和检索增强生成(RAG),并在两类案例中进行验证:一是权威教科书案例,二是税务咨询公司的真实案… · 2026/9/29 13:54:48

学Java别走弯路,这5个方向最吃香
学Java别走弯路,这5个方向最吃香

学Java的人很多,但学明白的人不多。有人学了半年还在写控制台程序,有人一年就能独当一面。差别不在天赋,而在方向。Java生态太庞大了,什么都学等于什么都没学。选对方向,事半功倍。今天盘点当前最吃香的5个Java方向&am… · 2026/9/29 4:13:53

AlphaAgents: Large Language Model based Multi-Agents for Equity Portfolio Constructions
AlphaAgents: Large Language Model based Multi-Agents for Equity Portfolio Constructions

AlphaAgents相关总结与翻译 一、文章主要内容总结 (一)研究背景与问题 传统股票投资组合管理依赖人类分析师处理海量信息(如财务披露、财报、市场新闻等),存在信息处理效率低、易受认知偏差(如损失厌恶、过度自信)影响的问题,可能错失投资收益机会。尽管AI在数据处理… · 2026/9/29 13:54:44

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/29 0:45:26

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/29 13:54:52

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/29 8:55:58

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码