题目:
描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3。
输入描述:
输入一行没有空格的字符串。
输出描述:
输出范围在(0~127)字符的个数。
示例1
输入:
abc
复制输出:
3
结果:
解题思路:
将每个字符的acsii码作为哈希表的索引。
如果哈希表中该位置的值为0,说明是第一次遇到。count+1。哈希表对应的值+1用于表示出现过。
代码:
#include <stdio.h>
int main() {
int acsii[128] = {};
char chr;
int count = 0;
while(scanf("%c", &chr) != EOF) {
if(chr == '\n') {
break;
}
if(acsii[(int)chr] == 0) {
count++;
acsii[(int)chr]++;
}
}
printf("%d\n", count);
return 0;
}