【剑斩OFFER】算法的暴力美学——面试题 01.02 :判定是否互为字符串重排

一、题目描述

二、算法原理

思路:哈希表统计字符串里每个字符的个数

这道题我使用的是用一个数组来模拟哈希表(原因:效率高,而且每个字符串都是小写字母,所以我们可以创建数组:int arr[ 26 ] 来模拟哈希表),我们先把第一个字符串里面的每个字符的个数都放到这个哈希表中,然后再访问第二数组,对第二个数组:我们用第一个数组里面存储的第一个字符串里面的每个字符出现个数减去第二个数组里每个字符出现的个数,如果数组里面的值都为0,那么这个两个字符串符合题目要求;当然前提是两个字符串的长度是一样的,如果不一样,这个两个字符串是绝对不符合题目要求。

三、代码实现

cpp 复制代码
class Solution {
public:
    bool CheckPermutation(string s1, string s2) {
        if(s1.size() != s2.size()) return false;//两个字符串的长度都不一样,那么直接返回false
        int num[26] = {0};//数组模拟哈希表
        for(auto& e : s1)//把 s1 的每个字符个数都放到这个数组里面
        {
            char ch = e - 'a';
            num[ch]++;
        }
        for(auto& e : s2)//让 s2 的每个字符个数减去 s1 的字符串的每个字符的个数
        {
            char ch = e - 'a';
            num[ch]--;
        }
        for(auto& e : num)//如果数组里面的数据都为 0 ,那么这两个字符串满足题目要求
        {
            if(e != 0) return false;
        }
        return true;
    }
};
相关推荐
会周易的程序员14 小时前
openplc runtimev4 Docker 部署
运维·c++·物联网·docker·容器·软件工程·iot
小陈phd14 小时前
多模态大模型学习笔记(二)——机器学习十大经典算法:一张表看懂分类 / 回归 / 聚类 / 降维
学习·算法·机器学习
@––––––14 小时前
力扣hot100—系列4-贪心算法
算法·leetcode·贪心算法
CoovallyAIHub14 小时前
让本地知识引导AI追踪社区变迁,让AI真正理解社会现象
深度学习·算法·计算机视觉
爱装代码的小瓶子14 小时前
【C++与Linux基础】进程间通讯方式:匿名管道
android·c++·后端
CoderCodingNo14 小时前
【GESP】C++ 二级真题解析,[2025年12月]第一题环保能量球
开发语言·c++·算法
yumgpkpm14 小时前
预测:2026年大数据软件+AI大模型的发展趋势
大数据·人工智能·算法·zookeeper·kafka·开源·cloudera
LYOBOYI12314 小时前
qtcpSocket详解
c++·qt
REDcker14 小时前
gRPC完整文档
服务器·网络·c++·网络协议·grpc
CoovallyAIHub14 小时前
AAAI 2026这篇杰出论文说了什么?用LLM给CLIP换了个“聪明大脑”
深度学习·算法·计算机视觉