题目
给定一个仅包含小写字母的集合。
请你判断,集合中不同字母的数量。
输入格式
输入一行字符串,用以描述这个小写字母集合。
字符串以 { 开始,以 } 结束,中间列出所有集合中包含的小写字母,小写字母两两之间用逗号(,)加空格()隔开。
输出格式
一个整数,表示集合中不同字母的数量。
数据范围
前 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 版权协议,转载请附上原文出处链接和本声明。