恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

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

  • 首页
  • 资讯中心
  • /
  • LeetCode Hot100(2.字母异位词分组)

相关资讯

Java学习进程8 2026/8/2 18:55:05
Claude Code被曝重大隐患,揭开了算法安全的帷幕 2026/8/2 18:55:06
Kamailio async模块 2026/8/2 18:55:06

最新资讯

PS素材包全拆解:从整理归类到实战落地的完整指南
奥拉星陶埙稳定通关指南:机制解析、阵容搭配与回合节奏控制
电商商品三级类目体系设计:从表结构到落地实践
TRANSCAD交通分配实操详解:从Wardrop原理到V/C比判读
EhLib 10.0.031 For Delphi 11 安装指南与核心功能实战解析
加扰与解扰原理及工程实践:从LFSR到同步恢复的完整指南

今日推荐

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现
UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南
BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

本周热门

超人会飞不算本事:系统稳定依赖清晰规则与边界设计
超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论
基于CNN的调制信号识别:MATLAB实现时频图分类实战

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

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

发布时间:2026/9/7 12:17:36
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; // 返回最终的分组结果

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号