题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int checktype(char *p){
int type[4]={0};
int sum=0;
while(*p!='\0'){
if(*p>='A'&&*p<='Z'){
type[0]=1;
}else if(*p>='a'&&*p<='z'){
type[1]=1;
}else if(*p>='0'&&*p<='9'){
type[2]=1;
}else{
type[3]=1;
}
p++;
}
if((type[0]+type[1]+type[2]+type[3])>=3){
return 1;
}
return -1;
}
int checksim(char pass[]){ //快慢指针
int l=0;
int h=1;
int count=0;
int len=strlen(pass);
while(l<len-3){
while(h<len-2){
if(pass[h]==pass[l]){
for(int i=0;i<3;i++){
if(pass[h+i]==pass[l+i]) count++;
else{
count=0;
break;
}
}
if(count==3){
return -1;
}
}
h++;
}
l++;
h=l+1;
}
return 1;
}
int main() {
char pass[101]={0};
while(1){
memset(pass,0,strlen(pass));
scanf("%s\n",pass);
int len=strlen(pass);
if(len ==0)break;
if(len<9){
puts("NG");
continue;
}
if(checktype(pass)<0){
puts("NG");
continue;
}
if(checksim(pass)<0){
puts("NG");
continue;
}
puts("OK");
}
return 0;
}
查看25道真题和解析