题解 | #计算某字母出现次数#
计算某字母出现次数
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;
}你们说这种写法是不是更规范,我在类中封装了方法,主函数中只处理输入字符串格式。然后调用类中的方法来获取结果
顺丰集团工作强度 379人发布
查看1道真题和解析