01.02、判定是否互为字符重排

01.02、[简单] 判定是否互为字符重排

1、题目描述

给定两个由小写字母组成的字符串 s1s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

在这道题中,我们的任务是判断两个字符串 s1s2 是否可以通过重新排列字符使得其中一个字符串变为另一个字符串。这意味着,我们需要检查这两个字符串是否包含完全相同的字符,并且每个字符的数量也必须相同。

2、方法一:排序比较法

2.1、思路解析

如果两个字符串是彼此的排列,那么对这两个字符串进行排序后,它们应该完全相同。因此,我们可以通过以下步骤来实现:

  1. 长度判断:首先,检查 s1s2 的长度。如果长度不同,直接返回 false
  2. 排序:对 s1s2 分别进行排序。
  3. 比较:比较排序后的两个字符串是否相等。如果相等,返回 true,否则返回 false
2.2、代码实现
class Solution {
public:bool CheckPermutation(string s1, string s2) {// 如果两个字符串长度不同,必然不能是彼此的排列if (s1.size() != s2.size()) {return false;}// 对两个字符串进行排序sort(s1.begin(), s1.end());sort(s2.begin(), s2.end());// 比较排序后的字符串是否相等return s1 == s2;}
};

3、方法二:哈希表计数法

3.1、思路解析

另一种方法是使用哈希表记录每个字符的出现次数。如果两个字符串是彼此的排列,那么每个字符在两个字符串中的出现次数必须相同。因此,我们可以通过以下步骤来实现:

  1. 长度判断:首先,检查 s1s2 的长度。如果长度不同,直接返回 false
  2. 字符计数:使用一个长度为 26 的数组 hash 来记录 s1 中每个字符的出现次数,并在遍历 s2 的过程中减去相应字符的计数。
  3. 判断字符计数:如果在遍历 s2 的过程中发现某个字符的计数小于 0,说明 s2 中包含了 s1 没有的字符,返回 false
  4. 返回结果:遍历结束后,如果所有字符的计数都为 0,返回 true
3.2、代码实现
class Solution {
public:bool CheckPermutation(string s1, string s2) {// 如果两个字符串长度不同,必然不能是彼此的排列if (s1.size() != s2.size()) {return false;}// 使用哈希表记录每个字符的出现次数int hash[26] = {0};// 统计 s1 中每个字符的出现次数for (const auto& ch : s1) {hash[ch - 'a']++;}// 遍历 s2,减去相应字符的计数for (const auto& ch : s2) {hash[ch - 'a']--;// 如果发现某个字符的计数小于 0,返回 falseif (hash[ch - 'a'] < 0) {return false;}}// 如果遍历结束后没有发现问题,返回 truereturn true;}
};

4、总结

这两种方法都可以有效地判断两个字符串是否为彼此的排列。方法一使用排序比较,简单直观;方法二使用哈希表计数,时间复杂度更低。具体选择哪种方法,可以根据具体情况和需求来决定。

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

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

相关文章

springMVC实现文件上传

目录 一、创建项目 二、引入依赖 三、web.xml 四、编写上传文件的jsp页面 五、spring-mvc.xml 六、controller 七、运行 一、创建项目 二、引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.o…

opencv进行人脸识别环境搭建

1. 构建人脸识别环境 1) 下载安装opencv 下载地址&#xff1a;Releases - OpenCV 参考博文&#xff1a;OpenCV下载安装教程&#xff08;Windows&#xff09;-CSDN博客 下载对应系统的opencv&#xff0c;如windows版&#xff0c;opencv-4.5.5-vc14_vc15.exe 2) 然后解压缩到…

[SAP ABAP] 批量导入(BDC)练习案例

业务目的&#xff1a;对采购订单做批量修改&#xff0c;同时需要用报表显示导入结果&#xff0c;Excel上传凭证后&#xff0c;录制BDC&#xff0c;调用BDC对采购订单进行修改 批量修改以下3个采购订单的短文本以及采购订单数量 提示Tips&#xff1a;上述提供的3个采购订单涉及…

《自动驾驶与机器人中的SLAM技术》ch4:预积分学

目录 1 预积分的定义 2 预积分的测量模型 ( 预积分的测量值可由 IMU 的测量值积分得到 ) 2.1 旋转部分 2.2 速度部分 2.3 平移部分 2.4 将预积分测量和误差式代回最初的定义式 3 预积分的噪声模型和协方差矩阵 3.1 旋转部分 3.2 速度部分 3.3 平移部分 3.4 噪声项合并 4 零偏的…

2Spark Core

2Spark Core 1.RDD 详解1) 为什么要有 RDD?2) RDD 是什么?3) RDD 主要属性 2.RDD-API1) RDD 的创建方式2) RDD 的算子分类3) Transformation 转换算子4) Action 动作算子 3. RDD 的持久化/缓存4. RDD 容错机制 Checkpoint5. RDD 依赖关系1) 宽窄依赖2) 为什么要设计宽窄依赖 …

归子莫的科技周刊#2:白天搬砖,夜里读诗

归子莫的科技周刊#2&#xff1a;白天搬砖&#xff0c;夜里读诗 本周刊开源&#xff0c;欢迎投稿。 刊期&#xff1a;2025.1.5 - 2025.1.11。原文地址。 封面图 下班在深圳看到的夕阳&#xff0c;能遇到是一种偶然的机会&#xff0c;能拍下更是一种幸运。 白天搬砖&#xff0c;…

机器学习第一道菜(一):线性回归的理论模型

机器学习第一道菜&#xff08;一&#xff09;&#xff1a;线性回归的理论模型 一、问题&#xff1a;千金买笑1.1 散点图1.2 机器学习能搞啥 二、模型的建立2.1 线性回归2.2 回归模型 前面讲了机器学习的“四大绝技”&#xff0c;今天&#xff0c;开始研究第一绝技“回归”&…

http转化为https生成自签名证书

背景 项目开发阶段前后交互采用http协议&#xff0c;演示环境采用htttps协议 &#xff0c;此处为个人demo案例 组件 后端&#xff1a;springBoot 前端&#xff1a;vue web 服务&#xff1a;tomcat 部署环境&#xff1a;linux 生成自签名证书 创建目录 存储证书位置 # mkdir -p…

【安卓开发】【Android】总结:安卓技能树

【持续更新】 对笔者在安卓开发的实践中认为必要的知识点和遇到的问题进行总结。 一、基础知识部分 1、Android Studio软件使用 软件界面 最新的版本是瓢虫&#xff08;Ladybug&#xff09;&#xff0c;bug的确挺多。笔者更习惯使用电鳗&#xff08;Electric Eel&#xff0…

PT8M2302 触控 A/D 型 8-Bit MCU

1. 产品概述 PT8M2302 是一款可多次编程&#xff08; MTP &#xff09; A/D 型 8 位 MCU &#xff0c;其包括 2K*16bit MTP ROM 、 256*8bit SRAM、 ADC 、 PWM 、 Touch 等功能&#xff0c;具有高性能精简指令集、低工作电压、低功耗特性且完全集 成触控按键功能。为…

HunyuanVideo 文生视频模型实践

HunyuanVideo 文生视频模型实践 flyfish 运行 HunyuanVideo 模型使用文本生成视频的推荐配置&#xff08;batch size 1&#xff09;&#xff1a; 模型分辨率(height/width/frame)峰值显存HunyuanVideo720px1280px129f60GHunyuanVideo544px960px129f45G 本项目适用于使用 N…

【网络 MAC 学习专栏 -- 如何理解 PHY 的 Link Up】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 OverviewClause 22/Clause 45Clause 22Clause 45 PHY Link 状态的软件实现 转自&#xff1a; 开心果 Need Car 2022年10月20日 09:50 上海 Overview PHY…

npm发布组件(vue3+webpack)

1.初始化Vue项目 vue create my-app 2.本地运行 npm run serve 3.新增目录和文件 1. src/package/index.js 2. src/package/wlz-btn/index.vue 3. src/package/wlz-input/index.vue // src\package\index.js import WlzBtn from "./wlz-btn"; import WlzInput …

数据库(MySQL)练习

数据库&#xff08;MySQL&#xff09;练习 一、练习1.15练习1.16练习 二、注意事项2.1 第四天 一、练习 1.15练习 win11安装配置MySQL超详细教程: https://baijiahao.baidu.com/s?id1786910666566008458&wfrspider&forpc 准备工作&#xff1a; mysql -uroot -p #以…

基于华为云车牌识别服务设计的停车场计费系统【华为开发者空间-鸿蒙】

文章目录 手把手的技术干货教程&#xff0c;记录从0到1的开发过程。一、前言1.1 内容简介1.2 云主机1.3 开发环境1.4 功能说明 二、华为云开发者空间2.1 进入开发者空间2.2 配置云主机2.3 安装系统2.4 启动云主机2.5 全屏切换2.6 共享桌面2.5 测试Python开发环境2.6 安装reques…

如何在前端给视频进行去除绿幕并替换背景?-----Vue3!!

最近在做这个这项目奇店桶装水小程序V1.3.9安装包骑手端V2.0.1小程序前端 最近&#xff0c;我在进行前端开发时&#xff0c;遇到了一个难题“如何给前端的视频进行去除绿幕并替换背景”。这是一个“数字人项目”所需&#xff0c;我一直在冥思苦想。终于有了一个解决方法…

Yolov8 目标检测剪枝学习记录

最近在进行YOLOv8系列的轻量化&#xff0c;目前在网络结构方面的优化已经接近极限了&#xff0c;所以想要学习一下模型剪枝是否能够进一步优化模型的性能 这里主要参考了torch-pruning的基本使用&#xff0c;v8模型剪枝&#xff0c;Jetson nano部署剪枝YOLOv8 下面只是记录一个…

AWS Lambda

AWS Lambda 是 Amazon Web Services&#xff08;AWS&#xff09;提供的无服务器计算服务&#xff0c;它让开发者能够运行代码而不需要管理服务器或基础设施。AWS Lambda 会自动处理代码的执行、扩展和计费&#xff0c;开发者只需关注编写和部署代码&#xff0c;而无需担心底层硬…

MySQL-索引

目录 &#x1f334;概念 &#x1f335;作用 &#x1f331;使用场景 &#x1f384;使用 查看索引 创建索引 删除索引 &#x1f334;概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引&#xff0c;并指定索引的类…

自动化办公|xlwings简介

xlwings 是一个开源的 Python 库&#xff0c;旨在实现 Python 与 Microsoft Excel 的无缝集成。它允许用户使用 Python 脚本自动化 Excel 操作&#xff0c;读取和写入数据&#xff0c;执行宏&#xff0c;甚至调用 VBA 脚本。这使得数据分析、报告生成和其他与 Excel 相关的任务…