字符串处理算法(一)检测输入字符串中是否包含连续的或者离散的test
请设计函数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
补充:软件开发 , C++ ,