思路
题目要求按照3个标准来验证密码是否合格。所以遍历一遍字符串,看是否满足就可以了,这一类题的题意都很简单,就是要细心,考虑到一些边界特殊情况什么的。细节见代码……
代码
#include <cstdio>
#include <cstring>
using namespace std;
char str[1000];
int main()
{
bool vowel[130];
memset(vowel, false, sizeof(vowel));
vowel['a'] = vowel['e'] = vowel['i'] = vowel['o'] = vowel['u'] = true;
while(scanf("%s", str))
{
if(strncmp(str, "end", 3)==0) break;
int len = strlen(str);
bool exsit_v = false;
bool flag = true;
for(int i=0; i<len; i++)
{
if(vowel[str[i]])
{
// 是否存在元音字母
exsit_v = true;
// 是否存在3个连续元音字母,考虑越界
if(i+2<len&&vowel[str[i+1]]&&vowel[str[i+2]])
{
flag = false;
break;
}
}
else
{
// 是否存在3个连续辅音字母,
if(i+2<len&&!vowel[str[i+1]]&&!vowel[str[i+2]])
{
flag = false;
break;
}
}
// 是否存在非 "ee"||"oo" 的重复字母对
if(i+1<len&&str[i]==str[i+1]&&str[i]!='o'&&str[i]!='e')
{
flag = false;
break;
}
}
if(exsit_v && flag) printf("<%s> is acceptable.\n", str);
else printf("<%s> is not acceptable.\n", str);
}
return 0;
}