【字符串】poj1575 Easier Done Than Said?

传送门:戳我


题目大意:有些人嫌弃自动生成的密码不好记,于是就想用能发音的密码方便记忆。然后给了你一套判断怎么样的密码是合法的的方法,按照要求对密码进行判断就行了。


思路:模拟嘛,照着题目敲,逻辑清楚点就好了。


#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

string s,ss;

int main(){
    getline(cin,ss);
    while (ss!="end"){
        int flag=1;
        s=ss+' ';
        int cnt=0,yof=0;
        for (int i=0;i<s.length()-1;i++){
            if (s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u'){
               flag=0;
               if (yof==1) cnt++;
               if (yof==2) {cnt=1;yof=1;}
               if (yof==0) {yof=1;cnt=1;}

               if (cnt>=3) {
                   flag=1;
                   break;
               }
            } 
            else {
                if (yof==2) cnt++;
                if (yof==1) {cnt=1;yof=2;}
                if (yof==0) {cnt=1;yof=2;}

                if (cnt>=3){
                    flag=1;
                    break;
                }
            } 

            if (s[i]==s[i+1]){
                if (s[i]!='e' && s[i]!='o'){
                    flag=1;
                    break;
                } 
            }
        }

        if (flag){
            cout<<"<"<<ss<<"> is not acceptable.\n";
        }
        else {
            cout<<"<"<<ss<<"> is acceptable.\n";
        }

        getline(cin,ss);
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值