用c语言代码判断异构字符串
时间: 2024-10-06 15:02:52 浏览: 28
在C语言中,异构字符串是指两个字符串包含的字符集不同,但是它们各自内部字符的顺序是相同的。为了检查两个字符串是否为异构字符串,你可以遍历其中一个字符串,并检查每个字符是否存在于另一个字符串中,同时记录下已匹配的字符。以下是简单的C语言代码示例:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
bool areIsomorphic(char* str1, char* str2) {
// 如果两个字符串长度不等,它们不可能是异构的
if (strlen(str1) != strlen(str2)) {
return false;
}
int map[256] = {0}; // 创建一个大小为ASCII字符范围的数组用于存储映射关系
for (int i = 0; str1[i] && str2[i]; i++) {
// 如果str1中的字符未被映射,尝试将它与str2中的字符关联
if (!map[str1[i]]) {
if (map[str2[i]] || str1[i] == str2[i]) {
// 如果str2中的字符已经被映射或者两者相等,说明不是异构串
return false;
} else {
map[str1[i]] = str2[i];
}
// 如果str1中的字符已经映射,且映射值与str2中的字符不一致,则不是异构串
} else if (map[str1[i]] != str2[i]) {
return false;
}
}
// 遍历完,如果所有字符都一一对应,那么是异构串
return true;
}
int main() {
char str1[] = "egg";
char str2[] = "add";
printf("Are %s and %s isomorphic? %s\n", str1, str2, areIsomorphic(str1, str2) ? "Yes" : "No");
return 0;
}
```
阅读全文