题目描述
写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
输入描述:
输入一个有字母和数字以及空格组成的字符串,和一个字符。
输出描述:
输出输入字符串中含有该字符的个数。
示例1
输入
ABCDEF A
输出
1
算法实现
实现1
//思路1:遍历字符串。因题目不区分大小写,所以比较时将两者转换为大写(或小写)
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
char ch;
int count=0;
cin>>str;
cin>>ch;
for(int i=0;i!=str.size();i++){
if(toupper(str[i])==toupper(ch))
count++;
}
cout<<count<<endl;
return 0;
}
实现2
//思路2:直接使用algorithm中的count函数
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(){
string str;
char ch;
while (cin >> str >> ch)
cout << (count(str.begin(), str.end(), toupper(ch))
+ count(str.begin(), str.end(), tolower(ch)))
<< endl;
return 0;
}
实现3
//思路3:用map来做,直接查询对应字符的个数
#include <iostream>
#include <map>
using namespace std;
int main(){
map<char,int>words;
char ch;
while ((ch=getchar())) {
if(ch=='\n')
break;
else
words[ch]++;
}
cin>>ch;
cout<<words[ch]<<endl;
return 0;
}
小结
思路1是最常规的遍历比较。思路2用到了count函数,如果对这个函数不熟可能想不到。思路3用map来做,是很好的思路,如果后续需要查其他字符,直接在map中找即可。