字符个数统计:C语言解法

运用的是HASH表的思想,因为只有最多只有128种数据,所以只需维护一个大小为128的字符数组,让输入的字符作为数组下标,取出这个下标数组中的字符直接与输入的字符比较(不用for循环从头再查),如果相同则跳过,不同则赋值,让结果++,最后遇到'\n'结束循环,返回结果即可。

#include<stdio.h>
#define MAX_TABLE_SIZE 128

int main(){
    char hash[MAX_TABLE_SIZE] = {-1};
    char c = 0;
    int num = 0;
    while(~scanf("%c",&c)){
        if(c == '\n') break;
        if(hash[(int)c] != c){
            hash[(int)c] = c;
            num++;
        }
    }
    printf("%d\n",num);
}

alt