题解 | #计算某字母出现次数#

计算某字母出现次数

http://www.nowcoder.com/practice/a35ce98431874e3a820dbe4b2d0508b1

#include<iostream>
#include<sstream>
#include<unordered_map>
#include<string>
using namespace std;

class Solution
{
public:
    int GetCount(string& input, char str)
    {
        // 也可以自定义哈希表,用数组实现
        unordered_map<char, int> umap;
        for (int i = 0; i < input.size(); i++)
        {
            if (input[i] >= 'A' && input[i] <= 'Z')
                umap[input[i] - 'A' + 'a'] ++;
            else
                umap[input[i]] ++;
        }
        if (str >= 'A' && str <= 'Z')
            return umap[str - 'A' + 'a'];
        return umap[str];
    }

};

string stringToString(string line)
{
    // 字符串流
    stringstream ss;
    ss.str(line);
    string item;
    // 剔除掉空格
    char delim = ' ';
    string output;
    // 题目中说有可能有空格,并且说查询的是某个字母,因此可以剔除掉空格,使得字符串中只保留字符和数字
    while (getline(ss, item, delim))
    {
        output += item;
    }
    return output;
}

char StringToChar(string ctr)
{
    const char* c = ctr.c_str();
    char temp = *c;
    return temp;
}
int main() {
    string line;
    while (getline(cin, line))
    {
        string input = stringToString(line);
        string line2;
        getline(cin, line2);

        char FindStr = StringToChar(line2);
        int num = Solution().GetCount(input, FindStr);
        cout << num << endl;
    }



    return 0;
}

你们说这种写法是不是更规范,我在类中封装了方法,主函数中只处理输入字符串格式。然后调用类中的方法来获取结果

全部评论

相关推荐

11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务