c语言判断两个字符串所含元素相等,元素排列顺序可以不一样
时间: 2024-10-07 19:00:32 浏览: 38
在C语言中,如果你想要比较两个字符串是否含有相同的字符但顺序不限,你可以使用哈希表(如字符计数数组)或者循环遍历字符串并逐个比较字符。这里介绍一种简单的方法:统计每个字符串中每个字符出现的次数,然后进行对比。
```c
#include <stdio.h>
#include <string.h>
#define MAX_CHAR 256 // 假设ASCII码范围内的字符
// 计算字符串中字符出现的次数
void count_chars(char *str, int counts[MAX_CHAR]) {
while (*str) {
++counts[*str++];
}
}
// 比较两个字符串的字符计数数组
int compare_counts(const int* str1_counts, const int* str2_counts) {
for (int i = 0; i < MAX_CHAR; ++i) {
if (str1_counts[i] != str2_counts[i]) {
return 0; // 如果有一个字符数量不同,则返回0表示不相等
}
}
return 1; // 都相等则返回1
}
int main() {
char str1[] = "abcba";
char str2[] = "cbabc";
int str1_counts[MAX_CHAR] = {0};
int str2_counts[MAX_CHAR] = {0};
count_chars(str1, str1_counts);
count_chars(str2, str2_counts);
if (compare_counts(str1_counts, str2_counts)) {
printf("The strings have the same characters in any order.\n");
} else {
printf("The strings do not have the same characters regardless of order.\n");
}
return 0;
}
```
这个程序首先计算每个字符串中各字符的数量,然后通过`compare_counts`函数比较这两个计数数组。如果所有字符的计数值都相等,那么字符串就被认为包含相同的字符,尽管顺序可能不同。
阅读全文