题目讲解
面试题 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;
}
};