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

力扣[面试题 01.02. 判定是否互为字符重排(哈希表,位图)

Problem: 面试题 01.02. 判定是否互为字符重排

文章目录

  • 题目描述
  • 思路
  • 复杂度
  • Code

题目描述

在这里插入图片描述

思路

思路1:哈希表

1.若两个字符串长度不相等,则一定不符合题意;
2.创建一个map集合,先将字符串s1中的每一个字符与其对应的数量存入集合(字符作为键、其对应的数量作为值);
3.再对于字符串s2,将其字符对应的值依次减去;
4.最后判断map集合中的每一个值,若存在不为0的键则不符合;

思路2:位图

和思路1类似,我们可以直接使用一个数组,作为位图将26个小写字母(题目中说到只包含小写字母)与其对应的个数存入到数组中(与思路1思路类似,也是一个数组加,一个数组减)

复杂度

思路1与2均如下
时间复杂度:

O ( n ) O(n) O(n)

空间复杂度:

O ( n ) O(n) O(n)

Code

思路1:

class Solution {
public:/*** bitmap** @param s1 Given word1* @param s2 Given word2* @return bool*/bool CheckPermutation(string s1, string s2) {int s1Len = s1.length();int s2Len = s2.length();if (s1Len != s2Len) {return false;}vector<int> alphabet(26);for (int i = 0; i < s1Len; ++i) {alphabet[s1.at(i) - 97]++;alphabet[s2.at(i) - 97]--;}for (int i = 0; i < alphabet.size(); ++i) {if (alphabet[i] != 0) {return false;}}return true;}
};

思路2:

class Solution {
public:/***  Map** @param s1 Given word1* @param s2 Given word2* @return bool*/bool CheckPermutation(string s1, string s2) {int s1Len = s1.length();int s2Len = s2.length();if (s1Len != s2Len) {return false;}unordered_map<char, int> map;for (char c: s1) {map[c] += 1;}for (char c: s2) {map[c] -= 1;}for (auto kv: map) {if (kv.second != 0) {return false;}}return true;}
};

相关文章:

  • java中事务的使用
  • JVM(2)实战篇
  • Redis相关介绍
  • 【PyTorch】改变张量(Tensor)形状操作
  • 2. Maven 继承与聚合
  • 小游戏和GUI编程(4) | 基于 SFML 的黑客帝国字符雨
  • 机器学习3----决策树
  • Android java基础_多态性
  • [ubuntu]split命令分割文件
  • Swift 初见
  • MQTT的学习与应用
  • rtt设备io框架面向对象学习-dac设备
  • Unity下使用Sqlite
  • 开发自定义标记应用程序
  • 2024年远控软件年度盘点:安全、稳定、功能之选
  • 【译】JS基础算法脚本:字符串结尾
  • codis proxy处理流程
  • css系列之关于字体的事
  • es6(二):字符串的扩展
  • Intervention/image 图片处理扩展包的安装和使用
  • JS+CSS实现数字滚动
  • React+TypeScript入门
  • React中的“虫洞”——Context
  • vuex 笔记整理
  • 浮现式设计
  • 复杂数据处理
  • 搞机器学习要哪些技能
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 数组的操作
  • 微信开源mars源码分析1—上层samples分析
  • 怎么将电脑中的声音录制成WAV格式
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • mysql面试题分组并合并列
  • # Maven错误Error executing Maven
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (2)(2.10) LTM telemetry
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (pojstep1.3.1)1017(构造法模拟)
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十六)一篇文章学会Java的常用API
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)Windows2003安全设置/维护
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • . NET自动找可写目录
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .Net各种迷惑命名解释
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • /usr/bin/env: node: No such file or directory
  • @Autowired多个相同类型bean装配问题
  • @ModelAttribute 注解
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码