【letcode-c++】242有效的字母异位词与49字母异位词分组

一、242 有效的字母异位词

(1)题目

这里是引用

(2)知识点–哈希

【这一段总结来自于代码随想录的讲解学透哈希表

哈希的优势是可以实现快速查找,它非常适合应用与查找某一个元素是否在一个集合中出现。
哈希有三种实现形式:

  1. 数组: 一般应用于要查找的元素只有一个,且连续且值不是很多的情况,比如这一题,要匹配的是26个字母,ASCII码是连续的,那就非常适合使用哈希数组
  2. set: 一般应用于要查找的元素只有一个,但值比较分散且很多的情况,
  3. map:一般应用于要关注的元素有两个,比如 49题

(3)解题思路与代码

class Solution {
public:bool isAnagram(string s, string t) {if(s.length()!=t.length()) return false;//创建一个长度为26的数组初始化为0,将a-z映射为0-25的数组下标//那么当s中每出现一个字母,就在映射的下标位置上的值+1//然后在遍历t,每出现一个字母,就在映射的下标位置上的值-1//最后,再判断数组,如果每一个位置的值都为0,说明每个字符出现的字符都相同,是字母异位词int n[26]={0};for(int i=0;i<s.length();i++){//字母相减会自动进行ASCII码相减n[s[i]-'a']++;}for(int i=0;i<t.length();i++){//字母相减会自动进行ASCII码相减n[t[i]-'a']--;}for(int i=0;i<26;i++){if(n[i]!=0) return false;}return true;}
};

二、49 字母异位词分组

(1)题目

这里是引用

(2)分析

这一题感觉是上一题的进阶版,不再是两个数组比较,而是多个数组进行比较和分组,那么再使用哈希数组就不是那么方便了。考虑到字母异位词排序之后是相同的,那么就考虑使用哈希map,将排序后的字符串作为key,排序前的字符串放到vector中,再将这个vector作为map的value,这样遍历一轮之后,所有的字符串都会根据key进入到字母异位词的vector里边了。

(3)代码

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {vector<vector<string>> ans;if(strs.empty()) return ans;if(strs.size()==1){ans.push_back(strs);return ans;} //创建一个哈希map//对每一个字符串进行排序,将排序后的字符串作为key,排序前的字符串作为value放到map中//这样每出现一个字符串,先排序,在map中查找,找到了,就将原串添加到value中//如果没找到,就在map中新建一项//这样结束之后,所有的字符串都被归类了 unordered_map<string,vector<string>> strsMap;for(int i=0;i<strs.size();i++){string str=strs[i];sort(str.begin(),str.end());  //排序auto it=strsMap.find(str);if(it!=strsMap.end()){//找到了(it->second).push_back(strs[i]);}else{vector<string> a;a.push_back(strs[i]);strsMap.insert(pair<string,vector<string>>(str,a));}}for(unordered_map<string,vector<string>>::iterator it=strsMap.begin();it!=strsMap.end();it++){ans.push_back(it->second);}return ans;}};

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

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

相关文章

C++篇:入门(2)

引用 引用的概念以及定义&#xff1a; 在C中&#xff0c;引用&#xff08;Reference&#xff09;是一个非常重要的概念又可以称之为取别名&#xff0c;它允许我们创建一个已存在对象的别名。引用提供了一种机制&#xff0c;通过它可以直接访问另一个变量、对象或函数的值&#…

【Python 逆向滑块】(实战五)逆向滑块,并实现用Python+Node.js 生成滑块、识别滑块、验证滑块、发送短信

逆向日期&#xff1a;2024.08.03 使用工具&#xff1a;Python&#xff0c;Node.js 本章知识&#xff1a;滑块距离识别&#xff0c;滑块轨迹生成&#xff0c;验证滑块并获取【validate】参数 文章难度&#xff1a;中等&#xff08;没耐心的请离开&#xff09; 文章全程已做去敏处…

【时时三省】(C语言基础)函数递归练习

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ——csdn时时三省 求字符串长度 求的是arr里面字符串的长度 abc后面还有一个\0为结束标志 在结算字符串长度的时候不算\0 所以它的长度是3 模拟实现一个strlen函数 str等于\0的时候就会结束返回count 如果…

一款简单且强大的免费开源图片压缩软件

图压是一款简单易用且功能强大的图片压缩工具&#xff0c;适用于Windows和macOS两大操作系统。它能够在几乎不损害图片清晰度的情况下&#xff0c;显著减小图片的体积&#xff0c;特别适合需要在网页、PPT、Word、PDF中使用的图片压缩。图压的操作界面简洁&#xff0c;用户可以…

2024智慧农场土地租赁家禽认养众筹实时监控商品溯源农业积分商城秒杀助农小程序源码

后端&#xff1a;系统后端使用PHP语言开发 前端&#xff1a;前端使用uniapp进行前后端分离开发 功能简介&#xff1a;土地种植、农业认养、积分商城、农场活动、视频监控、农场商城、实时数据监控、限时秒杀、农业众筹、送货上门、一键分销、农场入驻、全部店铺 运行环境&am…

PyMongo

什么是PyMongo PyMongo 是一个 Python 库&#xff0c;用于与 MongoDB 数据库进行交互。MongoDB 是一个基于文档的 NoSQL 数据库&#xff0c;提供高性能、可扩展性和灵活的架构。PyMongo 提供了一套工具&#xff0c;使得在 Python 程序中操作 MongoDB 变得简单和高效。 安装PyMo…

SpringBoot配置文件高级用法实战

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

u盘数据丢失怎么办?以下这四招教你轻松找回!

重要的文件资料要是不小心手滑删除了&#xff0c;轻则遭受领导的责骂&#xff0c;重则就是直接受到老板的警告了&#xff0c;所以打工人应该要人手必备数据找回的技巧&#xff0c;尤其是在针对已经拷贝好了数据在u盘当中时&#xff0c;更是需要快速去找到数据恢复的技巧&#x…

ARM 架构与技术综述

目录 认识 ARM ARM 发展历史 指令集 ARM 公司产品分类 ARM 体系结构 数据类型约定 处理器的 32 位和 64 位含义 指令集 ARM 处理器的工作模式 CPU (内核) 组成 寄存器 时钟 认识 ARM ARM 可以指&#xff1a; 一家公司。一种技术。一系列处理器。 架构&#xff1a;A…

Python数据结构实战:列表、字典与集合的高效使用

前言 在编程中&#xff0c;选择合适的数据结构对于提高程序效率至关重要。本文将介绍Python中最常用的数据结构——列表&#xff08;list&#xff09;、字典&#xff08;dict&#xff09;和集合&#xff08;set&#xff09;&#xff0c;并探讨它们的内部实现以及如何高效地使用…

量化金融人都在看哪些顶刊

精选了 7 种量化金融人都在看的顶刊&#xff0c;从最经典的有效市场假说理论&#xff0c;到最新的关于加密货币的研究&#xff0c;都发表在这些期刊上。 Journal of Finance 应该是毫无争议的 No.1。 创刊于1946年&#xff0c;是由美国金融协会&#xff08;American Finance A…

fastjson-1.2.24利用

参考视频&#xff1a;fastjson反序列化漏洞2-1.2.24利用 参考博客&#xff1a;Fastjson系列二——1.2.22-1.2.24反序列化漏洞 分析版本 fastjson1.2.24 JDK 8u141 fastjson反序列化特点 不需要实现Serializable 因为对于找不到符合条件的反序列化器&#xff0c;就把类当作…

华为的流程体系

缘由 2010年&#xff0c;华为销售额为1850亿元&#xff0c;其中国际市场占65%&#xff0c;净利润238亿元。当时&#xff0c;公司员工达11万人&#xff0c;公司处理合同达5万多个&#xff0c;290万个订单&#xff0c;大量的工作是手工处理&#xff0c;没有统一的流程支持&#…

机器学习流程图

第一部分&#xff1a;课程使用的技术栈 &#xff08;1&#xff09;Numpy 科学计算基础库&#xff0c;矩阵运算&#xff0c;线性代数 &#xff08;2&#xff09;matplotlib 绘图库&#xff0c;数据可视化 &#xff08;3&#xff09;Scikit 封装了各种分类&#xff0c;回归…

释放群众的创造力:打赢网络犯罪战争

关注公众号网络研究观获取更多内容。 企业业非但没有享受到技术带来的好处&#xff0c;反而承受着高昂的成本。 事情不应该是这样的。 企业投资 IT 是因为相信它可以改变他们与客户的关系、供应链和业务敏捷性。在过去 12 个月中&#xff0c;我们还看到人们对 AI 如何增强…

面向对象之设计模式,四种内部类,类关系

面向对象 1. 类关系 继承 使用extends表示,类和类单继承,接口和接口多继承,多个逗号隔开 又叫泛化关系 实现 类和接口是多实现关系,多个逗号隔开,通过关键字 implements表示 依赖 一个类中的局部变量 ,保存了另一个类对象 关联 又叫强依赖,一个类中的成员变量,是另一个类对象…

【Python】爬取网易新闻今日热点列表数据并导出

1. 需求 从网易新闻的科技模块爬取今日热点的列表数据&#xff0c;其中包括标题、图片、标签、发表时间、路径、详细文本内容&#xff0c;最后导出这些列表数据到Excel中。 网易科技新闻网址&#xff1a;https://tech.163.com 2. 解决步骤 2.1 前期准备 爬虫脚本中需要引用…

【数据泄露】最新 FBI 官员数据库泄露事件

前言 近日&#xff0c;一名化名为 “rpk” 的威胁行为者在 breachforums 论坛上声称泄露了包含 22,175 名 FBI 官员数据的数据库。此事件迅速引起了广泛关注&#xff0c;主要因为 FBI 作为美国联邦调查局&#xff0c;不仅是美国司法部的主要调查机构&#xff0c;还是美国情报界…

python实现图像分割算法4

python实现流域变换算法 算法原理基本步骤数学模型Python实现详细解释优缺点应用领域流域变换(Watershed Transform)算法是一种用于图像分割的技术,特别适用于分割重叠和相邻的对象。它的基本思想是将图像视为拓扑表面,通过模拟水的流动来分割区域。流域变换广泛应用于医学…

Python实战:wxauto与百度千帆大模型结合快速实现微信智能回复机器人

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…