使用 count_if 求解
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
getline(cin, s);
char c = tolower(getchar());
cout << count_if(s.begin(), s.end(), [c](char i) { return towlower(i) == c; }) << endl;
}
这是我能想到的C++最简单的写法。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
getline(cin, s);
char c = tolower(getchar());
uint16_t n = 0;
for (auto i : s) {
if (tolower(i) == c) {
++n;
}
}
cout << n << endl;
}
使用 unordered_map 求解
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main(int, char **)
{
string s;
char c;
getline(cin, s) >> c;
unordered_map<char, size_t> unorderedMap;
for (auto i : s) {
++unorderedMap[tolower(i)];
}
cout << unorderedMap[tolower(c)] << endl;
}
变更履历
2022/8/21:新增 count_if 求解 2022/4/9: 新增 unordered_map 求解