用c语言确定两串乱序同构
时间: 2023-05-30 11:06:10 浏览: 214
C语言-leetcode题解之第205题同构字符串.zip
两个字符串如果是乱序同构的,意味着它们包含的字符种类及其数量是相同的,只是排列顺序不同。
下面是一个用C语言实现的函数,用于判断两个字符串是否是乱序同构:
```c
#include <stdio.h>
#include <string.h>
int isAnagram(char* s, char* t) {
int sCount[26] = {0}; // 存放s字符串中每个字符出现的次数
int tCount[26] = {0}; // 存放t字符串中每个字符出现的次数
// 统计s字符串中每个字符出现的次数
int i = 0;
while (s[i] != '\0') {
sCount[s[i] - 'a']++;
i++;
}
// 统计t字符串中每个字符出现的次数
i = 0;
while (t[i] != '\0') {
tCount[t[i] - 'a']++;
i++;
}
// 判断两个字符串中的字符种类及其数量是否相同
for (i = 0; i < 26; i++) {
if (sCount[i] != tCount[i]) {
return 0;
}
}
return 1;
}
int main() {
char s[] = "anagram";
char t[] = "nagaram";
if (isAnagram(s, t)) {
printf("两个字符串是乱序同构的\n");
} else {
printf("两个字符串不是乱序同构的\n");
}
return 0;
}
```
上面的代码中,我们使用两个数组`sCount`和`tCount`来分别统计两个字符串中每个字符出现的次数。最后再比较这两个数组,如果它们的值完全相同,就说明这两个字符串是乱序同构的。
阅读全文