题目讲解
面试题 01.02. 判定是否互为字符重排
算法讲解
直观的想法:我们找到一个字符串的全排列,然后对比当前的排列是否等于另一个字符串。如果两个字符串如果互为排列,所以我们知道两个字符串对应的字符出现的个数相同,那么就可以排列成另一个字符串
细节:如果两个字符串的长度都不相同,那么肯定不能排列成功,直接返回false
class Solution {
public:bool CheckPermutation(string s1, string s2) {if(s1.size() != s2.size())return false;int Hash[26] = {0};for(int i = 0; i < s1.size(); i++){Hash[s1[i] - 'a']++;}for(int i = 0; i < s2.size(); i++){Hash[s2[i] - 'a']--;}//判断是否存在负数for(int i = 0; i < 26; i++){if(Hash[i] != 0)return false;}return true;}
};