1. 题目描述
写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
-
输入描述:
第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。 -
输出描述:
输出输入字符串中含有该字符的个数。
输入:
ABCDEF
A
输出
1
2. 思路
这道题直观的思路是可以利用STL的count函数,但是忽略大小写直接套用就不行了。一种直观的思路就是将输入string和ch都变成小写字母或者大写,然后在count就可以了。
3. 代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
char ToLower(char& ch) {
char result = ch;
if (isupper(ch)) {
result = tolower(ch);
}
return result;
}
int main() {
string str;
char ch;
while (cin >> str >> ch) {
ch = ToLower(ch);
transform(str.begin(), str.end(), str.begin(), ::tolower);
cout << count(str.begin(), str.end(), ch);
}
}
4. 参考文献
但是如果不能修改原来的字符串,那么就需要换别的思路了。这里主要是熟悉transform函数,count函数,isupper, toupper等函数的。