【华为机试】HJ2 计算某字符出现次数
## 【华为机试】HJ2 计算某字符出现次数 ## 【华为机试】HJ2 计算某字符出现次数 ## 【华为机试】HJ2 计算某字符出现次数 ## 【华为机试】HJ2 计算某字符出现次数 ## 【华为机试】HJ2 计算某字符出现次数 ## 【华为机试】HJ2 计算某字符出现次数 ## 【华为机试】HJ2 计算某字符出现次数描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
数据范围:1≤n≤1000
输入描述:
第一行输入一个由字母、数字和空格组成的字符串,第二行输入一个字符(保证该字符不为空格)。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例1
输入:
ABCabc
A
输出:
2
实现前知识点了解
这一题设计的知识有:字符转换及字符串遍历。
对此我整理了一下知识点,对这一部分有基础的同学可以直接跳过。
//字符大小写转换char
toupper(i);
tolower(i);
if(c>='a' && c<='z')
c -= 32;
//字符串转换string
```cpp
#include <algorithm>
transform(str.begin(), str.end(), str.begin(), ::toupper);
transform(str.begin(), str.end(), str.begin(), ::tolower);
//遍历字符串string
for(auto ch : str)
{
}
string::iterator iter = str.begin();
while(iter != str.end())
{
}
for(size_t i = 0; i < str.size(); i++)
{
}
思路
这一题不涉及很复杂的算法,考的是字符及字符串转换,然后再了解一下编程语言就可以了。 将大问题分解为小问题,一步一步按顺序处理:
- 将输入字符串转为大写
- 再遍历
实现
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string str;
char c;
int c_size = 0;
getline(cin,str);
cin.get(c);
transform(str.begin(), str.end(), str.begin(), ::toupper);
if(c>='a' && c<='z')
c -= 32;
for(auto ch:str){
if(ch == c)
{
c_size++;
}
}
cout<<c_size;
}