根据转载博文
http://blog.csdn.net/wujunokay/article/details/11868273里的要求:
请设计函数 int getTest(charinput[]) ,检测输入字符串中是否包含连续的或者离散的test,test只出现一次。题目概述:请设计函数,检测输入字符串中是否包含连续的或者离散的test,test只出现一次。
函数原型: int getTest(char input[])
函数说明:input为输入的字符串,如果出现连续的test则返回1,如果出现离散的test则返回2,如果没有出现test或者出现的次数和顺序不正确,则返回0。
测试样例:
char in[][30]=
{
"avvvdtestdkd",
"atvvdedskt",
"tshihitesst",
"testabctesst",
"testabcst",
"tshihitesst"
};
in[0]= avvvdtestdkd getTest(in[0])= 1
in[1]= atvvdedskt getTest(in[1])= 2
in[2]= tshihitesst getTest(in[2])= 0
in[3]= testabctesst getTest(in[3])= 0
in[4]= testabcst getTest(in[4])= 0
in[5]= tshihitesst getTest(in[5])= 0
代码实现如下:
int getTest(char input[])
{
int nT1count=0;//T1出现的个数
int nEcount=0;//E出现的个数
int nScount=0;//S出现的个数
int nT2count=0;//T2出现的个数
int nT1Pos=0;//T1出现的位置
int nEPos=0;//E出现的位置
int nSPos=0;//S出现的位置
int nT2Pos=0;//T2出现的位置
int nLen=strlen(input);
for (int i=0; i<nLen; i++)
{
if (input[i]=='t')
{
//第1个t出现
if (nT1count==0)
{
nT1count=1;
nT1Pos=i;
}
else if (nT1count==1)
{
if (nScount==1)
{
if (nT2count == 0)
{
nT2count =1;
nT2Pos=i;
}
else
{
return 0;//超过1次
}
}
else
{
return 0;//顺序不对
}
}
}
else if (input[i]=='e')
{
if (nEcount == 0)
{
if (nT1count==1)
{
nEcount = 1;
nEPos = i;
}
else
{
return 0;//顺序不对
}
}
else
{
return 0;//超过1次
}
}
else if (input[i]=='s')
{
if (nScount == 0)
{
if (nEcount==1)
{
nScount = 1;
nSPos = i;
}
else
{
return 0;//顺序不对
}
}
else
{
return 0;//超过1次
}
}
}
if ((nT1Pos+1==nEPos) &&(nEPos+1==nSPos) && (nSPos+1==nT2Pos))
{
return 1;
}
return 2;
}
int main()
{
int i;
char in[][30]=
{
"avvvdtestdkd",
"atvvdedskt",
"tshihitesst",
"testabctesst",
"testabcst",
"tshihitesst"
};
for(i=0;i<6;i++)
{
cout<<"in["<<i<<"]= "<<in[i]<<"\t\tgetTest"<<"(in["<<i<<"])= "<<getTest(in[i])<<endl;
}
return 0;
}
测试结果:
in[0]= avvvdtestdkd getTest(in[0])= 1
in[1]= atvvdedskt getTest(in[1])= 2
in[2]= tshihitesst getTest(in[2])= 0
in[3]= testabctesst getTest(in[3])= 0
in[4]= testabcst getTest(in[4])= 0
in[5]= tshihitesst getTest(in[5])= 0
转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/11912265