题解 | #计算某字符出现次数#
计算某字符出现次数
http://www.nowcoder.com/practice/a35ce98431874e3a820dbe4b2d0508b1
考虑大小写,因此边界条件有target为大写,target为小写,target非字母三种状态,judge做一个简单讨论用0,1,2返回对应的情况编号
target为大写,data[i]和data[i]-32均可
target为小写,data[i]和data[i]+32均可
target不为字母,则仅有data[i]匹配时可
#include<iostream>
#include<string>
using namespace std;
//判断字符类型
//大写返回1,小写返回2,否则返回0
int judge(char a)
{
if(a>='A'&&a<='Z')
{
return 1;
}
else if(a>='a'&&a<='z')
{
return 2;
}
return 0;
}
int main(){
string data;
int counter,flag,len;
char target;
getline(cin,data);
counter=0;
len=data.size();
cin>>target;
flag=judge(target);
switch (flag)
{
case 0:
{
for(int i=0;i<len;i++)
{
if(data[i] == target)
{
counter++;
}
}
break;
}
case 1:
{
for(int i=0;i<len;i++)
{
if(data[i]==target || data[i]==target+32)
{
counter++;
}
}
break;
}
case 2:
{
for(int i=0;i<len;i++)
{
if(data[i]==target || data[i]==target-32)
{
counter++;
}
}
break;
}
}
cout<<counter<<endl;
return 0;
}