在牛客上刷到密码验证合格程序,现在将通过的代码贴一下,供大家参考。
密码要求:
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; }