编写算法,求静态串中所含不同字符的种类数和每种字符的个数。c语言
时间: 2024-10-29 19:10:19 浏览: 6
在C语言中,你可以使用哈希表(如数组或结构体数组)来编写一个算法,用于计算给定字符串中不同字符的种类数和每个字符的出现次数。以下是简单的步骤:
1. 初始化一个大小适当的数组或结构体数组,例如`charCount[256]`,其中`256`是ASCII码范围内的字符数量。数组元素初始化为0。
2. 遍历输入字符串,对于每一个字符`ch`:
- 使用ASCII码值作为索引,检查当前字符对应的计数是否已存在(`charCount[ch] != 0`)。如果存在,说明这是重复字符,计数加一;如果不存在,设置为1,表示新发现的字符。
3. 当遍历完字符串后,数组`charCount`中非零元素的个数即为不同字符的种类数。
4. 对于每个字符及其对应的计数值,可以遍历一次数组并打印出来。
```c
#include <stdio.h>
#include <string.h>
#define MAX_CHAR 256
// 结构体用于存储字符和其出现次数
typedef struct {
char ch;
int count;
} CharCount;
void countChars(char* str) {
CharCount charCount[MAX_CHAR];
memset(charCount, 0, sizeof(charCount));
for (int i = 0; str[i]; i++) {
charCount[str[i]].count++;
}
printf("不同字符种类数: %d\n", countUniqueChars(charCount, MAX_CHAR));
printCharCounts(charCount, MAX_CHAR);
}
int countUniqueChars(CharCount* charCount, int size) {
int uniqueChars = 0;
for (int i = 0; i < size; i++) {
if (charCount[i].count > 0) {
uniqueChars++;
}
}
return uniqueChars;
}
void printCharCounts(CharCount* charCount, int size) {
for (int i = 0; i < size; i++) {
if (charCount[i].count > 0) {
printf("%c 出现次数: %d\n", charCount[i].ch, charCount[i].count);
}
}
}
int main() {
char inputStr[] = "Hello, World!";
countChars(inputStr);
return 0;
}
```
阅读全文