题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
#include <stdio.h> #include <string.h> //思路超级清晰,一步步来,就是代码很长。 int main() { char str[102]; while(scanf("%s",str)!=EOF)//一行行来处理 {int l; int flag=1; int flagABC=0; int flagabc=0; int flagnum=0; int flagoth=0; l=strlen(str); if(l<=8) flag=0;//长度大于8 for(int i=0;i<l;i++)//至少3种 { char buf; buf=str[i]; if((buf>='A')&&(buf<='Z')){ flagABC++; } else if((buf>='a')&&(buf<='z')){ flagabc++; } else if((buf>='0')&&(buf<='9')){ flagnum++; } else if(buf!=0) { flagoth++; } } if(flagABC!=0) flagABC=1; if(flagabc!=0) flagabc=1; if(flagnum!=0) flagnum=1; if(flagoth!=0) flagoth=1; if((flagABC+flagabc+flagnum+flagoth)<3) { flag=0; } for(int i=0;i<l-6;i++)//检子串,如果连着四个字符相同则一定有连着三个相同的+一个相同的,所以只需检3个的 { for(int j=i+3;j<(l-3);j++) { if((str[i]==str[j])&&(str[i+1]==str[j+1])&&(str[i+2]==str[j+2])) { flag=0; } } } if(flag==0) { printf("NG\n"); } else { printf("OK\n"); } } }