当前位置: 首页 > java >正文

Leetcode力扣解题记录--第49题(map)

题目链接:49. 字母异位词分组 - 力扣(LeetCode)

题目描述

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

示例 1:

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

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

解释:

  • 在 strs 中没有字符串可以通过重新排列来形成 "bat"
  • 字符串 "nat" 和 "tan" 是字母异位词,因为它们可以重新排列以形成彼此。
  • 字符串 "ate" ,"eat" 和 "tea" 是字母异位词,因为它们可以重新排列以形成彼此。

示例 2:

输入: strs = [""]

输出: [[""]]

示例 3:

输入: strs = ["a"]

输出: [["a"]]

 题目作答

 解题的第一步是要找到一个对应关系,要将具有相同字母的放入到一个集合里,然后就可以根据这个集合的名字再取出集合里面的元素,也就是有相同字母但是不同序的单词。

利用map可以很好的找到对应关系,key就是具有相同字母的组合,map.second就是存放所有相同字母但是不同序的单词。

我们可以使用一个哈希表( std::unordered_map),其中:

Key 是每个字符串排序后的结果。

Value 是一个字符串列表(vector<string>),用来存放所有能生成这个键的原始字符串。

Key:我们需要为每个字符串生成一个唯一的标识,这个标识对于所有字母异位词来说都应该是相同的。一个非常直观有效的方法是对字符串的字符进行排序。无论原始顺序如何,"eat", "tea", "ate" 在排序后都会得到同一个字符串:"aet"。同样,"tan""nat" 排序后都会得到 "ant"。这个排序后的字符串 "aet""ant" 就可以作为它们共同的“键”。

vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string, vector<string>> map;for (string str : strs) {string key = str;sort(key.begin(), key.end());// 使用排序后的 `key` 作为哈希表的键,// 将原始的、未排序的字符串 `str` 添加到该键对应的值中。map[key].push_back(str);}// 存放返回结果vector<vector<string>> result;for (auto pair : map) {// pair.first 是键// pair.second 是值(如 ["eat", "tea", "ate"])result.push_back(pair.second);}return result;}

 

http://www.xdnf.cn/news/14745.html

相关文章:

  • [Python] -基础篇8-Python中的注释与代码风格PEP8指南
  • mac重复文件清理,摄影师同款清理方案
  • poi设置word表格边框
  • 修改Spatial-MLLM项目,使其专注于无人机航拍视频的空间理解
  • Flink Savepoints 总结
  • 一文详解Modbus协议原理、技术细节及软件辅助调试
  • 【甲方安全建设】敏感数据检测工具 Earlybird 安装使用详细教程
  • PyTorch 中 nn.Linear() 参数详解与实战解析(gpt)
  • 直线模组精度等级是如何划分的?
  • Python 数据分析与机器学习入门 (五):Matplotlib 数据可视化基础
  • LeetCode Hot100(图论)
  • STM32——DAP下载程序和程序调试
  • 深入理解Webpack的灵魂:Tapable插件架构解析
  • 对selenium进行浏览器和驱动进行配置Windows | Linux
  • 华为云Flexus+DeepSeek征文 | Word办公软件接入华为云ModelArts Studio大模型,实现AI智能办公
  • 设计模式-访问者模式
  • TCPView v4.19 网络检测和拦截工具——东方仙盟
  • 《Effective Python》第十一章 性能——使用 timeit 微基准测试优化性能关键代码
  • xilinx axi datamover IP使用demo
  • HarmonyOS NEXT仓颉开发语言实战案例:电影App
  • Hive SQL 实战:电商销售数据分析全流程案例
  • 【期末分布式】分布式的期末考试资料大题整理
  • PCB工艺学习与总结-20250628
  • 推荐几本关于网络安全的书
  • Linux中《动/静态库原理》
  • python sklearn 机器学习(1)
  • Web应用开发 --- Tips
  • Windows 环境下设置 RabbitMQ 的 consumer_timeout 参数
  • 现代 JavaScript (ES6+) 入门到实战(三):字符串与对象的魔法升级—模板字符串/结构赋值/展开运算符
  • 华为云Flexus+DeepSeek征文 | 二次开发学习顾问系统对接华为云ModelArts Studio 实现智能答疑学习辅导