题解 | #密码验证合格程序#

密码验证合格程序

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;
}

全部评论

相关推荐

浩浩没烦恼:一二面加起来才一个小时? 我一面就一个小时多了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务