现在的位置: 首页 > 综合 > 正文

字符串处理算法(一)检测输入字符串中是否包含连续的或者离散的test

2013年10月23日 ⁄ 综合 ⁄ 共 1902字 ⁄ 字号 评论关闭

根据转载博文

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


抱歉!评论已关闭.