AcWing4399数字母

  • Post author:
  • Post category:其他




题目

给定一个仅包含小写字母的集合。

请你判断,集合中不同字母的数量。


输入格式


输入一行字符串,用以描述这个小写字母集合。

字符串以 { 开始,以 } 结束,中间列出所有集合中包含的小写字母,小写字母两两之间用逗号(,)加空格()隔开。


输出格式


一个整数,表示集合中不同字母的数量。


数据范围


前 5 个测试点满足,集合中包含的字母数量在 [0,10] 范围内。

所有测试点满足,集合中包含的字母数量在 [0,333] 范围内。


输入样例1:

{a, b, c}


输出样例1:

3


输入样例2:

{b, a, b, a}


输出样例2:

2


输入样例3:

{}


输出样例3:

0



解题思路

鄙人算法接触的不多,很多便捷方法不会,只能硬拆。

先通过getchar()函数,将输入字符中的字母提取出来(因为题目限定了输入的字母和符号,所以不需要加其他判定),存入一个数组,然后通过按序遍历数组查找与当前元素相同元素,并替换成空格‘ ’,最后统计数组中非空格字符数后输出。



代码

#include <iostream>

using namespace std;

const int N = 333;
char str[N];
char s;
int num=0;

int main()
{
    int i = 0;
    while ((s = getchar()) != '\n')
    {
        if(s!=' '&&s!='{'&&s!='}'&&s!=','){
            str[i] = s;
            ++i;
        }
    }
    int n = i;
    for (i = 0; i < n - 1; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (str[i] == str[j])
            {
                str[j] = ' ';
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        if (str[i]!=' ')
        {
            ++num;
        }
        
    }
    cout<<num;
    return 0;
}



版权声明:本文为qq_45763375原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。