计算某字母出现次数
描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数。(不区分大小写字母)
数据范围: ,输入的数据有可能包含大小写字母、数字和空格
输入描述:
第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字母。
输出描述:
输出输入字符串中含有该字符的个数。
示例1
输入:
ABCabc
A
复制
输出:
2
方法一:
#include<iostream>
#include<string>
using namespace std;
int main(){
string str="";
char target;
getline(cin,str);
cin>>target;
const char sign='a'-'A';
int ret=0;
for(size_t i=0;i<str.size();++i){
if(target>='a'&& target<='z'|| target>='A' && target<='Z'){
if(str[i]==target || str[i]+sign==target || str[i]-sign==target) ret++;
}
else {
if(str[i]==target) ret++;
}
}
cout<<ret<<endl;
return 0;
}
方法二(哈希):
#include<iostream>
#include<unordered_map>
using namespace std;
int main(){
char target;
unordered_map<char, int> mp;
char c;
while((c = getchar()) != '\n'){ //按字符输入字符串
if(c >= 'A' && c <= 'Z') //大写转小写
c = c - 'A' + 'a';
mp[c]++; //统计频率
}
cin >> target; //输入目标字符
if(target >= 'A' && target <= 'Z') //大写转小写
target = target - 'A' + 'a';
cout << mp[target] << endl;
return 0;
}