前言
一个菜鸟的学习经历,题目出自牛客网的华为机试。答案和解题思路借鉴了许多评论区的大佬们的代码。
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目描述
写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)
数据范围:1≤n≤1000
输入描述:
第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例:
输入:
ABCabc
A
输出:
2
二、解题思路
这道题目没有太多的解题方法,无非就是通过ASCII码来比较,但是有许多陷阱要特别注意。
1.由于不分大小写,所以要格外注意使用十进制ASCII码时不仅+32还要-32
2.你以为这就完了吗?
虽然
“0-9”的十进制ASCII码是48-57
“A-Z”的十进制ASCII码是65-90
“a-z”的十进制ASCII码是97~122
但是
因为48+32=60,57+32=89,所以“0-9”的十进制ASCII码+32与“A-Z”的十进制ASCII码有重复部分。也就是说此处还得进行判断。
3.因为存在空格,所以在获取字符串时不要用cin(在上一题中讲过)。建议使用getline()。
错误代码如下(示例):
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
char s