每日OJ题_哈希表②_力扣面试题 01.02. 判定是否互为字符重排

目录

[力扣面试题 01.02. 判定是否互为字符重排](#力扣面试题 01.02. 判定是否互为字符重排)

解析代码


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

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

难度 简单

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

示例 1:

复制代码
输入: s1 = "abc", s2 = "bca"
输出: true 

示例 2:

复制代码
输入: s1 = "abc", s2 = "bad"
输出: false

说明:

  • 0 <= len(s1) <= 100
  • 0 <= len(s2) <= 100
cpp 复制代码
class Solution {
public:
    bool CheckPermutation(string s1, string s2) {

    }
};

解析代码

当两个字符串的长度不相等的时候,是不可能构成互相重排的,直接返回 false。

如果两个字符串能够构成互相重排,那么每个字符串中各个字符 出现的次数 ⼀定是相同的。因此,可以分别统计出这两个字符串中各个字符出现的次数,然后逐个比较是否相等即可。这样的话,就可以选择哈希表来统计字符串中字符出现的次数。

cpp 复制代码
class Solution {
public:
    bool CheckPermutation(string s1, string s2) {
        if(s1.size() != s2.size())
            return false;
        int hash[26] = {0};
        for(auto& e : s1) // s1元素全部进入哈希表
        {
            hash[e - 'a']++;
        }
        for(auto& e : s2) // 判断哈希表中有没有s2元素
        {
            hash[e - 'a']--;
            if(hash[e - 'a'] < 0)
                return false;
        }
        return true;
    }
};
相关推荐
序属秋秋秋23 分钟前
《Linux系统编程之进程基础》【进程优先级】
linux·运维·c语言·c++·笔记·进程·优先级
草莓熊Lotso23 分钟前
C++ STL map 系列全方位解析:从基础使用到实战进阶
java·开发语言·c++·人工智能·经验分享·网络协议·everything
_F_y24 分钟前
C++IO流
c++
q***718525 分钟前
QoS质量配置
开发语言·智能路由器·php
草莓熊Lotso25 分钟前
《算法闯关指南:优选算法--模拟》--41.Z 字形变换,42.外观数列
开发语言·c++·算法
啊吧怪不啊吧29 分钟前
算法王冠上的明珠——动态规划之斐波那契数列问题
大数据·算法·动态规划
shura101430 分钟前
如何优雅地实现参数校验
java·开发语言
20岁30年经验的码农32 分钟前
Python语言基础文档
开发语言·python
wjs20244 小时前
Django Nginx+uWSGI 安装配置指南
开发语言
七夜zippoe5 小时前
JVM类加载机制(Class Loading)详解:双亲委派模型与破坏实践
java·开发语言·jvm·类加载·双亲委派