【力扣精选算法100道】——判定是否互为字符重排(哈希专题)

目录

🚩了解题意

🚩算法原理

第一种:排序

第二种方法:哈希

🚩实现代码






面试题 01.02. 判定是否互为字符重排 - 力扣(LeetCode)


🚩了解题意

我们输入俩个字符串,当俩个字符串按照字母顺序从小到大排序之后是一样的,那么说明俩个字符串重排。


🚩算法原理

第一种:排序

我们将s1和s2字符串排序,如果最后相等,那么就是重排字符串,如果最后不相等,那么就不是

但是我们可以提前声明   如果s1和s2字符串长度不相等,那么就直接返回false即可

第二种方法:哈希

本题只用让字符存入到hash中去,就只用数组定义哈希即可。

首先我们将s1字符串存入到hash表中去,然后遍历s2字符串,先让hash表中i下标对应的s2值个数减减,然后看是否个数<0,小于0说明肯定是没有出现过的,你看如果a存在s1中,b不存在s1中,那么a在s1中的个数是不是1,b在s1中的个数是不是0,如果我们遍历s2的时候,s2中存在b,那么先让b对应的个数在哈希表中--,b原先的个数是0,--之后是-1,那么小于0,我们就直接返回false,说明s1是不存在b的。


🚩实现代码

第一种:

class Solution {
public:bool CheckPermutation(string s1, string s2) {//如果俩个字符串长度不相等就直接falseif(s1.length()!=s2.length()){return false;}sort(s1.begin(),s2.end());sort(s2.begin(),s2.end());return s1==s2;
};

第二种: 

class Solution {
public:bool CheckPermutation(string s1, string s2) {//如果俩个字符串长度不相等就直接falseif(s1.length()!=s2.length()){return false;}vector<int>hash(128,0);//然后s1字符串存入到hash中for(int i=0;i<s1.length();i++){hash[s1[i]]++;}//遍历s2 先让当前的值在hash中个数--,如果减了之后小于0,说明没有出现这个单词//直接falsefor(int i=0;i<s2.length();i++){hash[s2[i]]--;if(hash[s2[i]]<0){return false;}}return true;}};

我觉得张老师是个很爱我的男孩。

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

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

相关文章

如何在服务器上建立国外私有云存储

随着数字化时代的到来&#xff0c;数据备份和存储成为了我们生活与工作中不可或缺的一部分。私有云存储&#xff0c;以其灵活性、安全性和便捷性&#xff0c;受到了越来越多用户的青睐。特别是对于需要在国外服务器上建立私有云存储的用户来说&#xff0c;这一需求更加迫切。下…

超详细Prometheus入门教程!(内含141页可复制官方文档下载方式)

141页的Prometheus官方中文文档&#xff0c;由于内容过多&#xff0c;在此只以截图展示部分内容&#xff0c;详细完整版的文档请见文末。 这份Prometheus官方中文文档既适合小白入门也适合有一定基础的同学进阶提升。这份文档共分为7大部分&#xff0c;从最基础的Prometheus介绍…

倾斜三维模型OSGB路径漫游——DasViewer

背景 有时候我们需要查看倾斜三维模型效果的效果&#xff0c;虽然也有很多软件可以用&#xff0c;比如CC、超图等等&#xff0c;但是这些软件都比较大&#xff0c;安装也比较麻烦&#xff0c;DasViewer这个软件就比较轻量&#xff0c;安装也简单&#xff0c;功能强大&#xff…

uniapp实现进度条组件

首先&#xff0c;在uniapp项目中创建一个自定义组件&#xff0c;可以命名为Progress.vue。在Progress.vue中&#xff0c;编写如下代码&#xff1a; <template><view class"progress"><view class"progress-bar" :style"{width: progr…

拿到年终奖马上离职,厚道吗?

拿到年终奖马上离职&#xff0c;厚道吗&#xff1f; 大家好&#xff0c;我是銘&#xff0c;全栈开发程序员。 今天在知乎上看到一个问题&#xff1a;拿到年终奖后马上辞职&#xff0c;厚道吗&#xff1f; image-20240229232132786 我的答案是&#xff1a;厚道&#xff0c;非常厚…

7.1.2 Selenium的用法1

目录 1. 初始化浏览器对象和访问页面 2. 查找节点及节点交互 2.1 查找单个节点 &#xff08;1&#xff09;获取方法1——特定方法 &#xff08;2&#xff09;通用方法 2.2 查找多个节点 2.3 节点交互 3. 动作链 4. 执行 JavaScript 之下拉进度条 5. 获取节点信息 5.…

视觉slam十四讲学习笔记(七)视觉里程计 2

介绍直接法的原理&#xff0c;并利用 g2o 实现直接法中的一些核心算法。 前言 1. 理解光流法跟踪特征点的原理。 2. 理解直接法是如何估计相机位姿的。 3. 使用 g2o 进行直接法的计算。 哔哩哔哩课程连接&#xff1a;视觉SLAM十四讲ch7_2_哔哩哔哩_bilibili 一、直接法…

小程序分销系统怎么开发_开启您的智能营销新时代

小程序分销系统&#xff1a;开启您的智能营销新时代 随着移动互联网的迅猛发展&#xff0c;微信小程序以其轻便、快捷的特性赢得了广大用户的喜爱。而在激烈的市场竞争中&#xff0c;如何借助小程序这一工具&#xff0c;实现产品的快速传播和销售&#xff0c;成为了众多商家关…

面试问答总结之Java进阶

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380;注解Annotaion &#xff08;java标注&#xff09;&#x1f415;内置注解&#x1f415;元注解 &#x1f380;对象克隆&#x1f415;如何实现克隆&#x1f415;如何实现深克…

Vue+SpringBoot打造医院门诊预约挂号系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2 科室医生档案模块2.1.3 预约挂号模块2.1.4 医院时政模块 2.2 可行性分析2.2.1 可靠性2.2.2 易用性2.2.3 维护性 三、数据库设计3.1 用户表3.2 科室档案表3.3 医生档案表3.4 医生放号…

STM32CubeIDE基础学习-新建STM32CubeIDE基础工程

STM32CubeIDE基础学习-新建STM32CubeIDE基础工程 前言 有开发过程序的朋友都清楚&#xff0c;后面开发是不需要再新建工程的&#xff0c;一般都是在初学时或者有特殊需要的时候才需要新建项目工程的。 后面开发都是可以在这种已有的工程上添加相关功能就行&#xff0c;只要前…

研发芯片行业ERP系统的优点

随着信息技术的快速发展&#xff0c;企业资源计划(ERP)系统已成为企业管理的核心工具。在芯片行业&#xff0c;研发活动尤为复杂&#xff0c;涉及资源、流程、技术等多方面的管理。因此&#xff0c;专为芯片行业研发的ERP系统应运而生&#xff0c;为企业带来了诸多优点。 一、资…