给定两个由小写字母组成的字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
首先,如果互为重排,那么它们之间的长度应该是相同的,因此我们首先就得比较它们的长度,如果它们之间的长度不一样长,我们直接返回false就行,如果一样的话,那么我们创建两个数组,分别用来记录这两个字符串中的元素出现次数,然后我们在比较这两个数组,如果它们互为字符重排,那么这两个数组应该是一样的,反之则不同。以下是代码。
bool CheckPermutation(char* s1, char* s2)
{
int Len1 = strlen(s1);
int Len2 = strlen(s2);
if (Len1 != Len2)
return false;
int arr1[26] = { 0 };//用来记录第一个字符串的元素
int arr2[26] = { 0 };//用来记录第二个字符串的元素
while (*s1)
{
arr1[*s1 - 'a']++;
arr2[*s2 - 'a']++;
s1++;
s2++;
}
for (int i = 0; i < 26; i++)
{
if (arr1[i] != arr2[i])
return false;
}
return true;
}
484

被折叠的 条评论
为什么被折叠?



