HJ10 字符个数统计

2,213 阅读1分钟

题目描述

编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次

例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。

数据范围: 1 <= n<=500

题目来源

题目来源

输入描述

输入一行没有空格的字符串。

输出描述:

输入字符串 中范围在(0~127,包括0和127)字符的种数。输入:

输入:
abc

输出:
3

输出:

输入:
aaa

输出:
1

思路

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

具体实现

#include <stdio.h>
#include <string.h>
int main()
{
    char str[10000];
    scanf("%s",str);
    int ascll[128]={0};
    int time=0;
    
    for(int i=0;i<strlen(str);i++)
    {
        if(ascll[str[i]]==0)
        {
            ascll[str[i]]++;
            time++;
        }
    }
    printf("%d",time);
}

时间复杂度

小结