题目链接:click here ~~
判断一个密码是否符合要求。
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <iostream>
using namespace std;
char vowels[] = {'a','e','o','i','u'};
bool isVowel(char a)
{//是否包含一元音
bool boolret = false;
for(int j = 0; j < strlen(vowels); j++)
if(vowels[j] == a)
{
boolret = true;
break;
}
return boolret;
}
int main()
{
char a[100];
memset(a,'\0',sizeof(a));
while(gets(a))
{
if(strcmp(a,"end") == 0)
break;
bool oneVowel = false;//是否包含一元音
bool threeVoCons = false;//是否包含3连续元音字母或3连续辅音字母
bool twoSame = false;//是否包含两个连续的相同字母
for(int i = 0; i < strlen(a); i++)
{
if(isVowel(a[i]))
oneVowel = true;
if(i < strlen(a) - 2)
if((isVowel(a[i]) && isVowel(a[i + 1]) && isVowel(a[i + 2])) ||
(!isVowel(a[i]) && !isVowel(a[i + 1]) && !isVowel(a[i + 2])))
threeVoCons = true;
if(i < strlen(a) - 1)
if(a[i] == a[i + 1])
{
if(a[i] == 'e' || a[i] == 'o')
twoSame = false;
else
twoSame = true;
}
}
if(oneVowel && !threeVoCons && !twoSame)
printf("<%s> is acceptable.\n",a);
else
printf("<%s> is not acceptable.\n",a);
memset(a,'\0',sizeof(a));
}
}
如果有更简洁代码,欢迎贴出交流。