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

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.dtcms.com/a/263697.html

相关文章:

  • 二型糖尿病居家管理小程序的设计与实现(消息订阅、websocket及时通讯、协同过滤算法)
  • OpenCV CUDA模块设备层-----“小于阈值设为零” 的图像处理函数thresh_to_zero_func()
  • 学习面向对象
  • 渗透测试(Penetration Testing)入门:如何发现服务器漏洞
  • 第2章,[标签 Win32] :兼容 ASCII 字符与宽字符的 Windows 函数调用
  • React:利用React.memo和useCallback缓存弹窗组件
  • 欢乐熊大话蓝牙知识24:LE Secure Connections 是 BLE 的安全升级术
  • HarmonyOS应用开发高级认证知识点梳理 (一) 布局与样式
  • 微信小程序使用秋云ucharts echarts
  • 利用springEvent,进行服务内部领域事件处理
  • 安卓接入百度定位和地图SDK
  • Go并发模式精要:掌握Goroutine与Channel的实战艺术
  • 开篇:GORM入门——Go语言的ORM王者
  • 物联网数据洪流下,TDengine 如何助 ThingLinks 实现 SaaS 平台毫秒级响应?
  • LabVIEW调用Excel宏实现数据可视化
  • 4D 毫米波雷达
  • 21、鸿蒙学习——使用App Linking实现应用间跳转
  • SQL Server 进阶:递归 CTE+CASE WHEN 实现复杂树形统计(第二课)
  • 【Python基础】12 闲谈分享:Python用于无人驾驶的未来
  • 借助飞算AI新手小白快速入门Java实操记录
  • 嵌入式编程-使用AI查找BUG的启发
  • AG32调试bug集合
  • [论文阅读] 人工智能 + 软件工程 | 从软件工程视角看大语言模型:挑战与未来之路
  • 基于 Vue + RuoYi 架构设计的商城Web/小程序实训课程
  • 企业级应用技术-ELK日志分析系统
  • java生成word文档
  • 11年考研作文真题大数据
  • 边缘人工智能与医疗AI融合发展路径:技术融合与应用前景(下)
  • SpringBoot计时一次请求耗时
  • mac python3.13 selenium安装使用