当前位置: 首页 > news >正文

蓝桥杯---哈希表第二题(leetcode是否为字符重新排列)

文章目录

  • 1.题目概述
  • 2.思路分析
    • 2.1解法一
    • 2.2解法二
  • 3.代码解释

1.题目概述

这个题目也算是一个 使用哈希表的比较简单的这个题目,希望通过这些题目增强大家对于这个哈希表数据结构的理解和掌握的这个能力;

下面的这个是我们的一个给定的字符串的重新排列,给定我们一个这个字符串,看看这个已知的第一个字符串是不是可以经过顺序的变换,成为我们的第二个字符串,这个时候如果可以的,返回值就是true,否则就是false;

image-20250317200316884

2.思路分析

2.1解法一

找到这个一直输的全排列的所有情况,就是这个给定的s1进行所有的变换,列举出来这个所有的可能的情况,把每一个可能的情况都去和我们的这个s2进行比较,只要有一个是符合条件的,就可以证明这个变换是可以成为s2,否则就直接返回我们的false就可以了;

2.2解法二

统计每一个数组里面的字符出现的个数,使用数组模拟哈希表

初始版本:创建出来两个哈希表,每一个哈希表对应的就是我们的一个字符串,对于这个字符串里面出现的这个字符的个数进行统计即可,然后比较一下两个哈希表,得出结果;

优化版本:只创建一个哈希表,s1用的时候是往我们的这个哈希表里面的对应位置的元素++,s2的话就是往从我们的这个哈希表里面的对应位置的这个元素–就可以了;

如果最后发现这个哈希表里面的每一个位置的数值都是0(使用数组模拟的),证明两个字符串里面的元素是完全一样的,是可以进行重新排列之后满足条件的;

特殊情况:如果两个字符串的这个长度本来都不相等,这个时候就不可能是一样的,直接返回就可以了;

3.代码解释

首先判断这个特殊的情况:长度不相等的话,就直接返回;

第一个for循环处理的就是我们的s1字符串的情况,对于数组里面的对应位置是++的;

第二个for循环处理的就是我们的s2字符串的情况,但是不同的地方就是他执行的是–操作;

当经历上面的两拨过程之后,这个时候哈希表里面存在不是0的元素,证明就是无法重新排列的,返回就是false,如果不存在,证明没问题,返回的就是true;

新排列的,返回就是false,如果不存在,证明没问题,返回的就是true;

image-20250317204556586

相关文章:

  • Linux:用 runc 构建 ARM 平台容器
  • 电动车出入库管理软件,电动车维修保养售后服务管理系统,佳易王电动车店管理系统操作教程
  • SQLMesh 系列教程:Airbnb数据分析项目实战
  • 一、初始 Linux
  • 【网络】手动部署并测试内网穿透
  • 网络华为HCIA+HCIP 以太网链路聚合与交换机堆叠、集群
  • 【Python】Python与算法有应用关系吗?
  • 施耐德PLC仿真软件Modbus tcp通讯测试
  • 离散概率分布:正态分布,二项分布,连续分布,正态分布的性质
  • Python实现自动提取目标文档的大纲(13)
  • 《驾驭MXNet:深度剖析分布式深度学习训练的高效之道》
  • Python学习- 数据结构类型
  • Folder Icons for Mac v2.0.3 文件/文件夹图标美化 支持M、Intel芯片
  • DeepSeek + Kimi 自动生成 PPT
  • 数据结构之双向链表
  • 【实战指南】基于DevExpress轻量化主题实现WPF应用性能升级
  • React类的生命周期
  • Ajax入门
  • C#进阶-ASP.NET网站会话固定漏洞的解决
  • 在云平台上用Claude 3.7 AI代理自动化电脑图形界面点击操作做表格
  • 备案加在wordpress/seo排名赚app靠谱吗
  • 青岛网站建设服务公司/新闻头条今日新闻
  • 分销商城网站建设/全国疫情最新信息
  • 兰州网站建设公司电话/seo引擎优化
  • 微信登录界面/怎么寻找网站关键词并优化
  • 求个网址老哥们2021/沧州网站推广优化