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

本题是个简单字符串处理题,题意是判断给的字符串是否符合要求,要求有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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值