242. 有效的字母异位词【哈希表】【C++】

题目描述

有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
示例 1:
输入: s = “anagram”, t = “nagaram”
输出: true
示例 2:
输入: s = “rat”, t = “car”
输出: false
提示:
1 <= s.length, t.length <= 5 * 104
s 和 t 仅包含小写字母

思路1(哈希表):

分别用两个哈希表存每个字母出现的次数:即key–字母,value–出现次数,如果两个哈希表相同则是异位词。
不用unordered_map进行存储,可以直接使用一个数组(key比较集中)。

class Solution {
public:bool isAnagram(string s, string t) {int hash[26] = {0};int hash2[26] = {0};for (int i = 0; i < s.size(); i++) {hash[s[i] - 'a']++;}for (int i = 0 ; i < t.size(); i++) {hash2[t[i] - 'a']++;}for (int i = 0; i < 26; i++) {if (hash[i] != hash2[i]) {return false;}}return true;}
};

优化:
不需要两个哈希表,第二个出现的字母在第一个哈希表上减,最后再遍历哈希表,都为0则是异位词。

class Solution {
public:bool isAnagram(string s, string t) {int hash[26] = {0};for (int i = 0; i < s.size(); i++) {hash[s[i] - 'a']++;}for (int i = 0 ; i < t.size(); i++) {hash[t[i] - 'a']--;}for (int i = 0; i < 26; i++) {if (hash[i] != 0) {return false;}}return true;}
};

时间复杂度O(n):遍历字符串。
空间复杂度O(1):哈希表是常数空间大小。

思路2(排序):

首先将两个字符串进行由小到大排序,然后逐个字母比较。

class Solution {
public:bool isAnagram(string s, string t) {if (s.size() != t.size()) {return false;}sort(s.begin(),s.end());sort(t.begin(),t.end());for (int i = 0; i < s.size(); i++) {if (s[i] != t[i]) {return false;}}return true;}
};

时间复杂度O(nlogn):快速排序
空间复杂度O(1):无额外空间

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

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

相关文章

公司法下的公司注册资金实缴的建议

公司法下的公司注册资金实缴的建议 新公司法已经实施了&#xff0c;现在设立的公司都将要按照新公司法的规定来执行。 那么新公司法对企业最大的影响&#xff0c;就是我们目前热议的公司实缴问题。 公司实缴这个问题我以前讲过好几次。针对近期看到的消息来说下我个人的观点。…

python学习-list

List(列表的定义语法) [元素1, 元素2, 元素3, ......] 什么是元素&#xff1f; 数据容器内的每一份数据&#xff0c;都称之为元素 元素的类型有限制吗&#xff1f; 元素的数据类型没有任何限制&#xff0c;甚至元素也可以是列表&#xff0c;这样就定义了嵌套列表 但是打印…

基于低代码开发技术的管理会计体系架构研究

在当今快速发展的信息技术时代&#xff0c;低代码开发技术已经成为一种日益流行的软件开发方法。它允许开发人员通过图形用户界面和配置而不是传统的计算机编程来创建应用程序。这种技术的发展为管理会计领域带来了新的机遇&#xff0c;使得会计专业人士能够更加高效地构建和管…

【实践总结】Python使用Pandas 读取Excel文件,将其中的值转换为字符串的方法

假设你的Excel的列有一行是这个样子的; 如果直接解析就会按照float字段处理&#xff0c;所以现在需要将他们按照字符串去读取出来。正确的做法如下说生意 import pandas as pddf pd.read_excel(ExcelPath, sheet_nameSHEET,dtype{Version: str})在这里我们使用的方法就是dtyp…

前端初学日记 (三) JS

javaScript 概述 JavaScript一种直译式脚本语言&#xff0c;用来为网页添加各式各样的动态功能 &#xff08;javaScript可以操作网页内容&#xff09;&#xff0c;不需要编译可直接通过浏览器解释运 行&#xff0c;通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。…

怎么使用MarkDown画矩阵

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 今天写文章需要用到矩阵&#xff0c;记录一下 画矩阵需要用到特殊的语法 &#xff08;1&#xff09;画普通矩阵&#xff0c;不带括号的 $$be…

【3】系统标定

文章目录 雷达标定相机主雷达标定底盘动力学标定车辆循迹验证建图 雷达标定 主要是为了获得到lidar到imu的tf关系。imu为父坐标lidar为子坐标。其他雷达标定到主lidar坐标系下。 标定的结果都是生成一个是四元数。 #mermaid-svg-crOWRnT4UE0jtJVy {font-family:"trebuch…

linux内核驱动第一课(基于RK3568)

学习Linux驱动需要以下基础知识&#xff1a; C语言编程&#xff1a;掌握C语言是开发Linux驱动程序的基本要求。操作系统原理&#xff1a;了解操作系统的基本概念和原理&#xff0c;如进程管理、内存管理、中断处理等。Linux内核&#xff1a;熟悉Linux内核的结构和工作机制&…

【代码随想录算法训练Day55】LeetCode 42.接雨水、LeetCode 84. 柱状图中最大的矩形

Day55 单调栈第二天 LeetCode 42.接雨水 典中典题目&#xff0c;我们还是运用了单调栈的思路&#xff0c;在大的一侧入栈时记录下标&#xff0c;右边界就是当前入栈元素&#xff0c;底就是栈顶元素&#xff0c;左边界就是左边最近的比栈顶大的值&#xff0c;也就是栈顶元素的…

Vue报错:Module not found: Error: Can‘t resolve ‘less-loader‘ in ‘文件地址‘

原因&#xff1a;Webpack无法找到 less-loader 模块&#xff0c;但在<style langless></style>中进行使用。less-loader 是一个Webpack的加载器&#xff0c;它用于将less文件编译成CSS。如果Webpack无法解析这个加载器&#xff0c;它就无法处理less文件&#xff0c…

【STM32HAL库学习】通信方式:USART、IIC、SPI

通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统 通信接口区别 名称引脚双工时钟电平设备USARTTX、RX全双工异步单端点对点I2CSCL、SDA半双工同步单端多设备SPISCLK、MOSI、MISO、CS全双工同步单端多设备CANCAN_H、CAN_L半双工异步差分多设…

通过A/B测试优化返利App的功能设计

通过A/B测试优化返利App的功能设计 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 什么是A/B测试&#xff1f; A/B测试是一种通过对比两个或多个版本的产品或…

Halcon机器视觉定位--模板匹配

一 Halcon模板匹配归纳 二 形状匹配算子介绍 find_shape_model( Image ,//待搜索图像 ModelID, //模版图像 AngleStart, //起始角度 AngleExtent, //角度范围 MinScore, //最小匹配分数 NumMatches, //匹配数目 MaxOverlap, //重叠度 SubPixel, //搜索精度 Greediness ,//自信度…

【免费数字孪生平台】医院数据可视化的新选择

随着大数据、云计算、人工智能等技术的深度融合&#xff0c;医院数据智能化升级已成为推动医疗服务质量飞跃的关键力量。 医院作为守护生命健康的前沿阵地&#xff0c;每天处理着海量的医疗数据。从患者病历、检查结果到医疗设备运行状态、医疗资源分配&#xff0c;每一项数据都…

还用老气的Excel做报表?试试这款“免费”可视化工具,快速制作3D智慧社区!

随着科技的飞速发展&#xff0c;智慧社区已经成为现代城市管理的重要组成部分。作为这一领域的核心工具&#xff0c;3D智慧社区可视化大屏凭借其先进的技术和强大的功能&#xff0c;正在逐步改变我们的生活方式。今天给大家分享一个 基于山海鲸可视化开发的3D可视化大屏的案例—…

【哈尔滨等保测评标准解析】

哈尔滨信息安全等级保护测评&#xff08;等保测评&#xff09;标准解析如下&#xff1a; 一、总体概述 哈尔滨市在进行等保测评时&#xff0c;遵循国家统一的标准框架&#xff0c;并结合本省的实际情况&#xff0c;形成了具有地方特色的安全防护模式。等保测评的主要目的是确…

【kubernetes】常用命令

常用命令 [资源类型]&#xff1a; pod [po] node [no] service [svc] namespace [ns] deployment [deploy] 等等 # 查看资源 kubectl get [资源类型]# 创建pod kubectl run [pod名] --imagenginx# 创建服务&#xff1a;deployment kubectl create deployment [deploy名] --ima…

DFS练习

105 从前序与中序遍历序列构造二叉树 import java.util.HashMap; import java.util.Map;class TreeNode {int val;TreeNode left;TreeNode right;public TreeNode(int val) {this.val val;} }public class Letcode105 {public TreeNode bulidTree(int[] preOrder, int[] inOrd…

探囊取物之多形式登录页面(基于BootStrap4)

基于BootStrap4的登录页面&#xff0c;支持手机验证码登录、账号密码登录、二维码登录、其它统一登录 低配置云服务器&#xff0c;首次加载速度较慢&#xff0c;请耐心等候&#xff1b;演练页面可点击查看源码 预览页面&#xff1a;http://www.daelui.com/#/tigerlair/saas/pr…

上帝之眼(BEVSee):多相机间无需标定,将各自目标统一到同一坐标系下(代码开源,提供数据集)

Abstract 我们解决了一个新的问题&#xff0c;即在鸟瞰视角&#xff08;BEV&#xff09;中无需预先给定相机校准的多视角相机和目标注册问题。这将多视角目标注册问题提升到一个新的无需校准的阶段&#xff0c;从而极大地缓解了许多实际应用中的限制。然而&#xff0c;这是一个…