Day02 2023/01/09
难度:简单
题目
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个目标字符,然后输出该字符串中该字符的出现次数。(不区分大小写字母) 数据范围:1≤n≤1000
输入描述:
第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。
输出描述:
输出该字符串中含有该字符的个数。(不区分大小写字母)
示例
输入:字符串:"ABC abc a" 目标字符:'a'
输出:3
说明:该字符串中a字母一共出现了3次
思路
该题比较简单,我们可以设置一个计数器count,从头遍历字符串,遇到目标字符,计数器加1,即可。
关键点
-
由于题目中不区分大小写,所以可以统一转成小写,来进行判断。
-
使用
getline()方法获取整个字符串,避免使用cin << s时遇到空格就结束的以至于无法获取完整字符串的问题。
c++代码实现
#include <cctype>
#include <iostream>
#include <string>
using namespace std;
//方法一:
class Solution {
public:
int CalNumOfWord(string s, char c) {
int count = 0;
//计数器计算目标字符出现的次数
c = tolower(c);
//将要统计的目标字符也转换成小写
//从头遍历字符串,其中s为当前字符串(容器),i为该字符串的每一个字符
for (auto i : s) {
if(tolower(i) == c) {
//将字符统一转成小写
count++;
}
}
return count;
//返回计数器
}
};
//
int main() {
//测试一些
string s;
cout << "请输入字符串:" << endl;
getline(cin, s);
//获取完整字符串
cout << "请输入目标字符:" << endl;
char c = cin.get();
//获取目标字符
cout << endl;
Solution s1;
cout << s1.CalNumOfWord(s,c);
return 0;
}
- 时间复杂度 --- n 是字符串长度,需要遍历字符串一次。
- 空间复杂度
总结
- 该题目比较简单,使用常规的解题思路就可以完成,但还是要避免 眼高手低 的现象,在代码书写的过程中注意上述 关键点 处所描述的细节。