题目描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
输入描述:
输入N个字符,字符在ACSII码范围内。
输出描述:
输出范围在(0~127)字符的个数。
输入例子:
abc
输出例子:
3
解题思路
首先定义一个长度为128的数组vec,初始化为0,用于存ASCII码为0-127的字符的个数。然后根据输入的字符串str统计在这个范围内的字符出现的个数。最后根据vec数组的元素是否为0判断str中共出现了多少个字符。
当然,也可以用unordered_set来存字符串中不重复的字符,unordered_set的长度就是字符数目。
代码
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string str;
cin >> str;
vector<int> vec(128); //存ASCII码为0-127的字符的个数
for (char ch : str) //统计ASCII码为0-127的字符的个数
{
if (ch >= 0 && ch <= 127)
vec[ch]++;
}
int num = 0;
for (int i : vec) //统计出现字符的个数
{
if (i > 0)
num++;
}
cout << num << endl;
return 0;
}