1、题目给出有可能出现空格,直接用cin>>str存在问题,遇到空格认为输入结束则空格后面的字符被舍弃; 可以使用getline(cin, str)获取输入一行字符串;
2、存在大小写,可以将匹配的字符转为大写或小写分别取字符串里面查找;
3、用for循环匹配字符与字符串中的字符计数;
c++ :
几种不同解法:
#include <iostream>
#include <string>
#include <set>
#include <bits/stdc++.h>
using namespace std;
int main()
{
string str;
getline(cin, str);
char ch;
cin >> ch;
char tmpCh = '\0';
char tmpCh2 = '\0';
if (ch >= 'A' && ch <= 'Z') {
tmpCh = ch + 32;
}
if (ch >= 'a' && ch <= 'z') {
tmpCh2 = ch - 32;
}
//multiset<char> mSetStr;
int cnt = 0;
for (int i = 0; i < str.length(); i++) {
//mSetStr.insert(str[i]);
if (ch == str[i]) {
//cnt++;
} else if (tmpCh == str[i]) {
//cnt++;
} else if (tmpCh2 == str[i]) {
//cnt++;
}
}
cnt += count(str.begin(), str.end(), ch);
cnt += count(str.begin(), str.end(), tmpCh);
cnt += count(str.begin(), str.end(), tmpCh2);
//cnt += mSetStr.count(ch);
//cnt += mSetStr.count(tmpCh);
//cnt += mSetStr.count(tmpCh2);
cout << cnt << endl;
return 0;
}