leetcode(哈希表)49.字母异位词分组(C++详细解释)DAY5

文章目录

  • 1.题目
    • 示例
    • 提示
  • 2.解答思路
  • 3.实现代码
    • 结果
  • 4.总结

1.题目

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

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例

示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]

示例 2:
输入: strs = [“”]
输出: [[“”]]

示例 3:
输入: strs = [“a”]
输出: [[“a”]]

提示

  1. 1 <= strs.length <= 104
  2. 0 <= strs[i].length <= 100
  3. strs[i] 仅包含小写字母

2.解答思路

需要定义的变量:
一定要有一个对应返回类型的answer。
设置一个哈希表hash。
(1) 键:存储字符串排序后的样子(唯一的)
(2) 值:每一类排序后一样的字符串放在同一类的分组里。(存储原来的字符串)
具体实现思路:
直接遍历整个strs,排序后一样的放到同一个hash表的键对应的值的位置。
存储到hash表后,在将每个值的答案存储到answer中。

补充知识点:
sort(s.begin(), s.end());//排序的类型需要是字符串
字符串更多成员函数详细介绍:C++字符串的常用操作函数全总结
unordered_map<string, vector< string >> hash; // 定义一个哈希表
hash[s].push_back(strs[i]);//将键s对应的值中添加一个vector< string >类型的元素strs[i]

遍历这种类型的hash表时:
auto 自动识别变量类型
pair表示哈希表中的一对键值对
其中pair.first表示哈希表中键的内容
其中pair.second表示哈希表中值的内容

3.实现代码

class Solution
{
public:vector<vector<string>> groupAnagrams(vector<string> &strs){vector<vector<string>> answer;//答案存放unordered_map<string, vector<string>> hash; // 定义一个哈希表// 键用来存放排序后的字符串,值用来存放原来字符串strs中的对应字符串for (int i = 0; i < strs.size(); ++i){string s = strs[i];            sort(s.begin(), s.end());hash[s].push_back(strs[i]);}//此段for循环语句可使用如下代码代替// for (string &str : strs)// {//     string s = str;//     sort(s.begin(), s.end());//     hash[s].push_back(str);// }for (auto &pair : hash){ /* pair表示哈希表中的一对键值对pair.first表示哈希表中键的内容pair.second表示哈希表中值的内容*/answer.push_back(pair.second);}return answer;}
};

结果

2024-2-8-23:30

4.总结

新学了哈希表的形式,以及增加键和值的方法,还有遍历这种哈希表的方法。

自信,坚持,upup~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/461165.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 Python opencv 的人脸识别的酒店客房入侵系统的检测

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

nodejs+vue高校实验室耗材管理系统_m20vy

用户功能&#xff1a; 登录后要有一个首页 比如:可以看见目前的耗材消耗记录&#xff0c;可做成图表菜单栏在左侧显示 1.个人信息管理 可以对基本信息进行修改&#xff0c;(修改密码时需要验证) 2.耗材管理&#xff08;耗材信息&#xff09; 普通用户可以查询当前相关耗材信息[…

【Leetcode】236. 二叉树的最近公共祖先

文章目录 题目思路代码结果 题目 题目链接 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可…

无人机飞控系统飞行原理介绍,旋翼无人机飞行控制技术详解

旋翼飞行器是通过调节多个电机转速来改变螺旋桨转速&#xff0c;实现升力的变化&#xff0c;进而达到飞行姿态控制的目的。 多旋翼飞行原理详解 以四旋翼飞行器为例&#xff0c;飞行原理如下图所示&#xff0c;电机1和电机3逆时针旋转的同时&#xff0c;电机2和电机4顺时针旋…

高级FPGA开发之基础协议PCIe(二)

高级FPGA开发之基础协议之PCIe&#xff08;二&#xff09; 一、TLP报文类型 在PCIe总线中&#xff0c;存储器读写、I/O读写和配置读写请求TLP主要由以下几类报文组成&#xff1a; 1.1 存储器读请求TLP和读完成TLP 当PCIe主设备&#xff08;RC或者EP&#xff09;访问目标设备…

flutter监听app进入前后台状态的实现

在开发app的过程中&#xff0c;我们经常需要根据app的前后台的状态&#xff0c;做一些事情&#xff0c;那么我们在flutter中是如何实现这一监听的&#xff1f; flutter给我们提供了WidgetsBindingObserver来进行一些状态的判断&#xff0c;但是判断前后台的状态只是该API种其中…

SpringCloud-Ribbon:负载均衡(基于客户端)

6. Ribbon&#xff1a;负载均衡(基于客户端) 6.1 负载均衡以及Ribbon Ribbon是什么&#xff1f; Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。简单的说&#xff0c;Ribbon 是 Netflix 发布的开源项目&#xff0c;主要功能是提供客户端的软件负…

阿里云资源包管理

-我守在梦的出口&#xff0c;任凭人来人走 阿里云对象存储中的下行流量包是什么&#xff1f; 阿里云对象存储&#xff08;OSS&#xff09;中的下行流量包是一种预付费的流量套餐&#xff0c;用于支付从阿里云 OSS 存储桶下载数据产生的流量费用。当你的应用程序或用户从 OSS 存…

飞马座卫星

1960年代马歇尔太空飞行中心的历史显然与建造土星五号月球火箭有关。然而&#xff0c;鲜为人知的是该中心在设计科学有效载荷方面的早期工作。 Fairchild 技术人员正在检查扩展的 Pegasus 流星体探测表面。Pegasus 由马里兰州黑格斯敦的 Fairchild Stratos Corporation 通过马歇…

Django(十)

1. Ajax请求 浏览器向网站发送请求时&#xff1a;URL 和 表单的形式提交。 GETPOST 特点&#xff1a;页面刷新。 除此之外&#xff0c;也可以基于Ajax向后台发送请求&#xff08;偷偷的发送请求&#xff09;。 依赖jQuery编写ajax代码 $.ajax({url:"发送的地址"…

[WUSTCTF2020]朴实无华(特详解)

一开始说header出问题了 就先dirsaerch扫一遍 发现robot.txt 访问一下 去看看&#xff0c;好好好&#xff0c;肯定不是得 他一开始说header有问题&#xff0c;不妨抓包看看&#xff0c;果然有东西 访问看看&#xff0c;乱码修复一下&#xff0c;在之前的博客到过 <img src…

波奇学Linux: 文件描述符

文件和操作系统的关系 操作系统控制进程&#xff0c;文件的打开是在进程中进行。意味着用来控制进程的PCB必然有文件的信息&#xff0c;操作系统通过控制PCB的信息来控制文件的读写。 Q1&#xff1a;如何证明文件打开是在进程中进行&#xff1f; 编写c文件调用fopen来操作文件…