题目描述:
编写一个函数,统计所输入字符串中不同字符的数量,字符在ASCII码的范围为0到127。
比如,字符串1235asba,有1、2、3、5、a、s、b这七种,输出7。
输入描述:
输入字符串。
输出描述:
输出字符种类数。
示例:
输入:123aaa
输出:4
解题思路:
一种笨方法是用map或者其他容器,挨个分析字符串的字符,如果对应字符没出现过,其值为0,出现过的为1,每次将值变为1时记一次数,得到结果。
还有一种用哈希表来做,这个方法更快更简洁,直接放里面塞char,自动去重,最后输出下hash_set的个数即可。
测试代码:
map解法
#include <iostream> #include <map> using namespace std; int main() { map<char,int> m; string str; getline(cin,str); int number=0; for(int i=0;i<str.length();++i) { if(m[str[i]]==0) { m[str[i]]=1; number++; } } cout<<number; return 0; }
hash_set
#include <iostream> #include <unordered_set> using namespace std; int main() { string s; cin >> s; unordered_set<char> u; for(char c : s) if(c >= 0 && c <= 127) u.insert(c); cout << u.size() << endl; return 0; }