牛客网&&华为机试&&计算字符个数
代码实现1
//使用char类型的字符串
#include<iostream>
#include<cstring>
#include<cctype>
using std::cin;
using std::cout;
const int maxnum = 1000;
//题目并没有提示字符串的大小,这样设置会浪费空间,注:该值为100和1000的通过率不一样
int main()
{
char test_value[maxnum];
char ch1;
char ch2;
int num = 0;
int len = 0;
cin.getline(test_value,maxnum);
len = strlen(test_value);
if(len == 0)
return 0;
cin >> ch1;
//strmcp(ch2, ch1); 字符串复制
ch2 = ch1;
if(islower(ch1)) //如果是小写字母
ch2 = toupper(ch1); //小写字母转换为大写字母
if(isupper(ch1)) //如果是大写字母
ch2 = tolower(ch1); //小写字母转换为大写字母
for(int i = 0; i < len; i++)
{
if(test_value[i] == ch1 || test_value[i] == ch2)
++num;
}
cout << num;
return 0;
}
代码实现2
//使用string类型字符串
#include<iostream>
#include<cstring>
#include<cctype>
using std::cin;
using std::cout;
using std::string;
int main()
{
string test_value;
char ch1;
char ch2;
int num = 0;
int len = 0;
getline(cin,test_value);
len = test_value.size();
if(len == 0)
return 0;
cin >> ch1;
//strmcp(ch2, ch1); 字符串复制
ch2 = ch1;
if(islower(ch1)) //如果是小写字母
ch2 = toupper(ch1); //小写字母转换为大写字母
if(isupper(ch1)) //如果是大写字母
ch2 = tolower(ch1); //小写字母转换为大写字母
for(int i = 0; i < len; i++)
{
if(test_value[i] == ch1 || test_value[i] == ch2)
++num;
}
cout << num;
return 0;
}
代码实现3
//牛客网牛油
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
char A;
cin>>str;
cin>>A;
int num=0;
int i=0;
while(str[i]!='\0')
{
if(A==str[i])
num++;
else if((A>='A'&&A<='Z')&&(A==str[i]-32)) //大写字母与小写字母相差32
num++;
else if((A>='a'&&A<='z')&&(A==str[i]+32))
num++;
i++;
}
printf("%d",num);
return 0;
}
编程笔记
- 代码解题思路:
- 对于字符串的操作,比较char类型与string类型字符串类型的一些操作区别。尽可能的使用string类型的字符串做相应的字符串类型题目,因为对于输入为string类型的字符串内存不用事先声明,cin会根据实际输入字符的长度分配相应的空间,另外string类型的一些字符串操作也更加灵活。但是,还是必须掌握char类型字符串的用法。
详见 C++ Primer Plus&&P83 - 熟悉字符函数库,这些函数的原型是在头文件cctype中。