您的位置:首页 > 理论基础 > 计算机网络

http://acm.hdu.edu.cn/showproblem.php?pid=1039..借鉴了别人的一些方法。。

2013-05-11 18:36 330 查看
本题是个简单字符串处理题,题意是判断给的字符串是否符合要求,要求有3个:

1,  必须含有元音;

2,  不能有3个连续是元音或辅音;(不是连续字母)

3,  不能有相邻相同的,但oo,ee可以;

参考了一下别人的方法,加上自己的理解!!

思路:由条件入手,首先必须判断出该字符串中元音字母,根据所需,就应该定义两个数组,来保存条件2,3。当代码中的yuan[i]=1,并且保证有连续三个字母的则不符合条件,当代码中b[i]=1是则就是满足条件1,2,3.则输出,,,

#include<iostream>

#include<stdio.h>

#include<string.h>

using namespace std;

int main()

{

    int yuan[36];

    int i,b[6],len;

    char str[1001];

    memset(yuan,0,sizeof(yuan));

    yuan[1]=1;yuan[5]=1;yuan[9]=1;yuan[15]=1;

    yuan[21]=1;//标记元音字母,以便计算。

    while(cin>>str&&strcmp(str,"end"))

    {

        b[0]=0;//三个条件依次先赋初值。

        b[1]=1;b[2]=1;

        len=strlen(str);

        for(i=0;i<len;i++)

        {

            if(str[i]=='a'||str[i]=='e'||str[i]=='i'||str[i]=='o'||str[i]=='u')

                b[0]=1;//条件1:是否含有元音字母?

            if(str[i]==str[i+1]&&str[i]!='e'&&str[i]!='o')

            {

                b[1]=0;//条件2:是否有相同的字母为邻?

                break;

            }

        }

        for(i=0;i<len;i++)

       {

            if(yuan[str[i]-96]==yuan[str[i+1]-96]&&yuan[str[i]-96]==yuan[str[i+2]-96])

            {

                b[2]=0;break;//条件3:是否有连续三个元音在一起?

            }

        }

        if(b[2]&&b[1]&&b[0])//当三个条件同时满足时,输出,,

            printf("<%s> is acceptable.\n",str);

        else

            printf("<%s> is not acceptable.\n",str);

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: