当前位置:编程学习 > C/C++ >>

字符串处理算法(一)检测输入字符串中是否包含连续的或者离散的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++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,