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

一、问题描述

二、解题思路

解法一:

对s1和s2进行sort排序,返回s1是否等于s2;

解法二:

用哈希表分别来记录s1和s2中字符出现的次数,统计完后,判断两个哈希表是否相等;

三、代码实现

解法一:

时间复杂度:T(n)=O(nlogn)

空间复杂度:S(n)=O(1)

cpp 复制代码
class Solution {
public:
    bool CheckPermutation(string s1, string s2) {
        sort(s1.begin(),s1.end());
        sort(s2.begin(),s2.end());
        return s1==s2;
    }
};

解法二:

时间复杂度:T(n)=O(n)

空间复杂度:S(n)=O(n)

cpp 复制代码
class Solution {
public:
    bool CheckPermutation(string s1, string s2) {
        unordered_map<char,int> hash1,hash2;
        for(auto x:s1) hash1[x]++;
        for(auto x:s2) hash2[x]++;
        return hash1==hash2;
    }
};
相关推荐
云泽808几秒前
从三路快排到内省排序:探索工业级排序算法的演进
算法·排序算法
qwepoilkjasd17 分钟前
C++智能指针介绍
c++
weixin_4684668532 分钟前
遗传算法求解TSP旅行商问题python代码实战
python·算法·算法优化·遗传算法·旅行商问题·智能优化·np问题
·白小白38 分钟前
力扣(LeetCode) ——43.字符串相乘(C++)
c++·leetcode
咬_咬1 小时前
C++仿muduo库高并发服务器项目:Poller模块
服务器·开发语言·c++·epoll·muduo
FMRbpm1 小时前
链表5--------删除
数据结构·c++·算法·链表·新手入门
程序员buddha1 小时前
C语言操作符详解
java·c语言·算法
John_Rey1 小时前
API 设计哲学:构建健壮、易用且符合惯用语的 Rust 库
网络·算法·rust
愿没error的x1 小时前
动态规划、贪心算法与分治算法:深入解析与比较
算法·贪心算法·动态规划
NONE-C2 小时前
动手学强化学习 第6章 Dyna-Q 算法
算法