在牛客上刷到密码验证合格程序,现在将通过的代码贴一下,供大家参考。
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度大于2的子串重复
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int checklen(char *passwd)
{
if(strlen(passwd)>8)
return 1;
else
return 0;
};
int checkdigit(char *passwd)
{
int len = strlen(passwd);
int a,b,c,d;
a = 0;
b = 0;
c = 0;
d = 0;
for(int i=0;i<len;i++)
{
if(passwd[i]>='0' && passwd[i]<='9')
{
a = 1;
}
else if(passwd[i]>='a' && passwd[i]<='z')
{
b = 1;
}
else if(passwd[i]>='A' && passwd[i]<='Z')
{
c = 1;
}
else
{
d = 1;
}
}
if((a+b+c+d)>=3)
return 1;
else
return 0;
};
int checksub(char *passwd)
{
int len = strlen(passwd);
int i = 0;
int j = 0;
for(i=0;i<len-5;i++)
{
for(j=i+3;j<len-2;j++)
{
if((j+2)<len)
{
if(passwd[i]==passwd[j] && passwd[i+1]==passwd[j+1]&&passwd[i+2]==passwd[j+2])
{
return 0;
}
}
}
}
return 1;
};
int main()
{
char inputpasswd[200]={0};
int i = 0;
int j = 0;
int k = 0;
int f = 0;
while(gets(inputpasswd)!=NULL)
{
i = checklen(inputpasswd);
f = 0;
if(i>0)
{
j = checkdigit(inputpasswd);
if(j>0)
{
k = checksub(inputpasswd);
if(k>0)
{
f = 1;
}
}
}
if(f==1)
printf("OK\n");
else
printf("NG\n");
}
return 0;
}