力扣[面试题 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;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024.2.10 DMS(数据库管理系统)初体验

数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件&#xff0c;用于建立、使用和维护数据库&#xff0c;简称DBMS。它对数据库进行统一的管理和控制&#xff0c;以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据&#xff0c;数据库管…

大年初一,送出最后8000个红包封面!

今天是大年初一&#xff0c;大家都是怎么安排的&#xff1f; 小灰最近在南方旅游&#xff0c;玩得很开心&#xff0c;后面会给大家分享自己的见闻。 过年期间&#xff0c;大家多少都会给亲朋好友发一些微信红包&#xff0c;拥有个性化的红包封面绝对是一件很酷的事情。 前一段时…

007集——数据存储的端序(大端序和小端序转换代码)——VB/VBA

VB/VBA存储的端序 1、要想制造高性能的VB/VBA代码&#xff0c;离了指针是很难办到的。 2、因为VB/VBA里&#xff0c;用Long来表示指针&#xff0c;而32位(包括64位兼容的)计算机里4字节整数的处理&#xff0c;是最快的方式&#xff01; 3、要想用指针来处理数据&#xff0c;…

4. ⼤模型微调方法

到底有哪些微调⽅法呢&#xff1f; 第⼀类⽅法&#xff1a;借助OpenAI提供的在线微调⼯具进⾏微调&#xff1b;第⼆类⽅法&#xff1a;借助开源微调框架进⾏微调&#xff1b; 1. OpenAI在线微调⼯具 网址&#xff1a;https://platform.openai.com/docs/guides/fine-tuning/c…

无人机遥感技术应用分析,无人机遥感系统测绘技术详解

由于无人机具有机动快速、使用成本低、维护操作简单等技术特点,因此被作为一种理想的飞行平台广泛应用于军事和民用各个领域。尤其是进入二十一世纪以后,许多国家将无人机系统的研究、开发、应用置于优先发展的地位,体积小、重量轻、探测精度高的新型传感器的不断问世,也使无人…

让Python遇上Office--从编程入门到自动化办公实践

最近仔细的学习了这本《让Python遇上Office》的书&#xff0c;同时把我的学习进程与心得录制了同步视频。 到今天终于把全部90集完成&#xff0c;并且上传到下面的视频平台了&#xff0c;欢迎大家观看并指正&#xff01; 西瓜视频&#xff1a;https://www.ixigua.com/7300628…

c语言中的隐式类型转换

数据类型转化 我们在实际编程中&#xff0c;不管你是有意的还是无意的&#xff0c;有时候都会让两个不同类型的数据参与运算&#xff0c;编译器为了能够生成CPU可以正常 执行的指令&#xff0c;往往会对数据做类型转换&#xff0c;将两个不同类型的数据转换成同一种数据类型。…

Popper.js:ElementUI 中采用弹出,提示框库,好用的没朋友。

Hi&#xff0c;我贝格前端工场&#xff0c;继续介绍经典的js库&#xff0c;ElementUI 中Tooltip、Select、Cascader、TimePicker等组件中怎么把提示框定位到目标元素的&#xff0c;是用 Popperjs 来实现。 一、Popper.js是什么&#xff1f; Popper.js是一个用于创建弹出式组件…

LLM之LangChain(七)| 使用LangChain,LangSmith实现Prompt工程ToT

如下图所示&#xff0c;LLM仍然是自治代理的backbone&#xff0c;可以通过给LLM增加以下模块来增强LLM功能: Prompter AgentChecker ModuleMemory moduleToT controller 当解决具体问题时&#xff0c;这些模块与LLM进行多轮对话。这是基于LLM的自治代理的典型情况&#xff0c;…

回归预测模型:MATLAB多项式回归

1. 多项式回归模型的基本原理 多项式回归是线性回归的一种扩展&#xff0c;用于分析自变量 X X X与因变量 Y Y Y之间的非线性关系。与简单的线性回归模型不同&#xff0c;多项式回归模型通过引入自变量的高次项来增加模型的复杂度&#xff0c;从而能够拟合数据中的非线性模式。…

卫星通讯领域FPGA关注技术:算法和图像方面(3)

最近关注的公众号提到了从事移动通信、卫星通讯等领域的FPGA、ASIC、信号处理算法等工程师可能需要关注的技术&#xff0c;有通感融合、RNSS授时、惯导&#xff0c;以下做了一些基础的调研&#xff1a; 1 通感融合 1&#xff09;来自博鳌亚洲论坛创新报告2023:通感算融合已成…

Linux操作系统基础(三):虚拟机与Linux系统安装

文章目录 虚拟机与Linux系统安装 一、系统的安装方式 二、虚拟机概念 三、虚拟机的安装 四、Linux系统安装 1、解压人工智能虚拟机 2、找到解压目录中的node1.vmx 3、启动操作系统 虚拟机与Linux系统安装 一、系统的安装方式 Linux操作系统也有两种安装方式&#xf…

算法学习——LeetCode力扣栈与队列篇1

算法学习——LeetCode力扣栈与队列篇1 232. 用栈实现队列 232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; 描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQu…

动态水印怎么加 怎么去除动态水印 视频剪辑软件 会声会影安激活序列号 会声会影怎么剪辑视频

为了防止白嫖或者增加美观效果&#xff0c;视频制作者可能会采用动态水印的方式&#xff0c;让其他人难以盗取视频使用。动态水印的添加&#xff0c;需要应用到运动路径功能。接下来&#xff0c;本文会教大家动态水印怎么加&#xff0c;怎么去除动态水印的相关内容。感兴趣的小…

解析十六进制雷达数据格式:解析雷达数据长度。

以Cat62格式雷达数据为例&#xff0c;十六进制雷达数据部分代码&#xff1a; 3e0120bf7da4ffee0085 雷达数据长度使用4个字符&#xff08;2个字节&#xff09;标识&#xff0c;在这里是“0120”&#xff0c;转换为十进制数为288。 雷达数据长度父类&#xff1a; base_length_…

人工智能如何彻底改变身份欺诈

据 AuthenticID 称&#xff0c;近一半的企业报告合成身份欺诈有所增加&#xff0c;而生物识别欺骗和伪造 ID 欺诈尝试也有所增加。 在当今的数字化存在中&#xff0c;消费者和企业都面临着新的挑战&#xff0c;从考虑数字身份的影响到应对生成人工智能等新工具的使用和流行。与…

最高的牛(C++)

有 N头牛站成一行&#xff0c;被编队为 1、2、3…N每头牛的身高都为整数。 当且仅当两头牛中间的牛身高都比它们矮时&#xff0c;两头牛方可看到对方。 现在&#xff0c;我们只知道其中最高的牛是第 P 头&#xff0c;它的身高是 H &#xff0c;剩余牛的身高未知。 但是&#xf…

css2复合选择器

一.后代&#xff08;包含&#xff09;选择器&#xff08;一样的标签可以用class命名以分别&#xff09; 空格表示 全部后代 应用 二.子类选择器 >表示 只要子不要孙 应用 三.并集选择器 &#xff0c;表示 代表和 一般竖着写 应用 四.伪类选择器&#xff08;包括伪链接…

VR和AR傻傻分不清,一句话给你讲明白。

不说废话&#xff0c;直接说结论&#xff0c;虚拟现实&#xff08;Virtual Reality&#xff0c;VR&#xff09;和增强现实&#xff08;Augmented Reality&#xff0c;AR&#xff09;。如果现实是A&#xff0c;虚拟是B&#xff0c;那么VRB&#xff0c;ARAB&#xff0c;就这简单&…

基于javaEE的ssm仓库管理系统

仓库管理系统的重中之重是进销存分析这一板块&#xff0c;在这一板块中&#xff0c;顾名思义能够查询到近期的进货记录&#xff0c;包括每日的进货单据&#xff0c;单品推移(即某一商品的库存变化)&#xff0c;方便我们核对库存差异。同时也需要查询到每日的销售数据&#xff0…