给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
bool CheckPermutation(char* s1, char* s2){
// 一个字符串重排之后能变成另外一个字符串 取决于 字符串中每一个字母出现的个数是否相同
int a[26];
for(int i = 0; i < 26; i++)
{
a[i] = 0;
}
// 桶排序
// 统计第一个字符串中每一个字符出现的个数
int i =0;
while(s1[i] != '\0')
{
a[s1[i] - 'a']++;
i++;
}
int b[26];
for(int i = 0; i < 26; i++)
{
b[i] = 0;
}
// 统计第一个字符串中每一个字符出现的个数
int j = 0;
while(s2[j] != '\0')
{
b[s2[j] - 'a']++;
j++;
}
// 比较ab数组是否相等
for(int i = 0; i < 26; i++)
{
if(a[i] != b[i])
{
return false;
}
}
return true;
}