华为机试HJ10:字符个数统计

Posted 翟天保Steven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试HJ10:字符个数统计相关的知识,希望对你有一定的参考价值。

题目描述:

编写一个函数,统计所输入字符串中不同字符的数量,字符在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;
}

以上是关于华为机试HJ10:字符个数统计的主要内容,如果未能解决你的问题,请参考以下文章

华为机试HJ84:统计大写字母个数

华为机试HJ84:统计大写字母个数

华为机试HJ102:字符统计

华为机试HJ102:字符统计

华为机试题 HJ84统计大写字母个数

华为机试题 HJ84统计大写字母个数