⭐一、判定是否互为字符重排
题目描述:判定是否互为字符重排

解题思路:
- 首先判断两个字符串长度是否相等,若不相等,那么它们不可能彼此排列,直接返回 false。
- 若字符串长度相等,我们就可以使用 qsort 函数对两个字符串进行排序来判断它们是否排列。
qsort 是标准库中的快速排序函数,它需要以下参数: • 要排序的数组(s1 和 s2)。 • 数组的长度(len1 和 len2)。 • 每个元素的大小(sizeof(char))。 • 比较函数(cmp)。
- 排序完成后,如果两个字符串是彼此的排列,那么它们排序后的结果应该完全相同,因此我们就可以使用 strncmp 函数来比较排序后的字符串。
代码实现:
#include <stdbool.h>
int cmp(const void* a, const void* b) {
return *(char*)a - *(char*)b;
}
bool CheckPermutation(char* s1, char* s2) {
int len1 = strlen(s1);
int len2 = strlen(s2);
if (len1 != len2) {
return false;
}
qsort(s1, len1, sizeof(char), cmp);
qsort(s2, len2, sizeof(char), cmp);
if (strncmp(s1, s2, len1) == 0) {
return true;
}
return false;
}









