问题
输入一个由字母、数字和空格组成的字符串,输入一个字符,然后输出输入字符串中该字符(不区分大小写字母)的出现次数。
其中第一行输入字符串,第二行输入一个字符(保证该字符不为空格),输出字符串中含有该字符的个数。
例如:

知识点
知识点:字符串、哈希
问题分析:
我们需要在一个由字母、数字和空格组成的字符串中找到一个字符(不区分大小写)出现的次数,首先输入上,由于包含空格,我们用getline函数避免空格影响,然后我们常规的去依次对比字符串和指定字符,此处注意考虑英文大小写问题,判断其出现的次数即可。
代码
#include <iostream>
using namespace std;
int main() {
string a;
char b;
getline(cin,a);
cin>>b;
int n=a.length();
int count=0;
while(n--)
{
if(a[n] >= 'a' && a[n] <= 'z'){
if(a[n]==b||a[n]-32==b)
count++;
}
else if(a[n] >= 'A' && a[n] <= 'Z'){
if(a[n]==b||a[n]+32==b)
count++;
}
else if(a[n]==b)
count++;
}
cout<<count<<endl;
return 0;
}
结果
| 运行时间 | 占用内存 |
|---|---|
| 3ms | 312KB |
拓展——cin与getline
在 C++ 中,cin 和 getline 都是用于从标准输入读取数据的函数。
cin 通常用于读取基本数据类型,如整数、浮点数和字符等,它会忽略输入缓冲区中的空白字符(如空格、制表符和换行符)并将其留在缓冲区中。相反,getline 用于读取一行文本,包括空格和其他特殊字符,直到遇到换行符或文件结尾。
总结:cin会以“ ”作为输入结束点而getline直到遇到换行符或文件才会结尾。
文章提供了一个C++程序,该程序使用getline和cin从用户输入读取字符串和字符,然后计算字符串中给定字符(不区分大小写)的出现次数。程序通过检查字符是否在ASCII表中的小写或大写字母范围内来处理大小写,并使用哈希概念(尽管未明确提及)来计数字符。
959





