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

密码验证合格程序

https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841

#include <stdio.h>
#include <string.h>

#define MAX 101

int second_isillegal(char str[],int n);
int third_isillegal(char str[],int n);


int main()
{
    char str[MAX]={0};
    int len;
    
    while(scanf("%s",str) != EOF)
    {
        len=strlen(str);
    if(len<8)
    {
        printf("NG\n");
    }
    else if(second_isillegal(str,len))
    {
        printf("NG\n");
    }
    else if(third_isillegal(str,len))
    {
        printf("NG\n");
    }
    else
    {
        printf("OK\n");
    }
    }
    return 0;
    
}

int second_isillegal(char str[],int n)
{
    int num[4]={0};
    int sum =0;
    int i;
    
    //得到num是否大于等于3
    for(i=0;i<n;i++)
    {
        
         if(str[i] >='0' && str[i]<='9'&& num[0]==0)
            {
                num[0]++;
            } 
            else if((  (str[i]>=':' && str[i]<='@') ||  (str[i]>='[' && str[i]<='`') || (str[i]>='{' && str[i]<='~') || (str[i]>='!' && str[i]<='/') )&& (num[1]==0))
            {
                num[1]++;
            }
            else if(str[i]>='a' && str[i]<='z'&& num[2]==0)
            {
                num[2]++;
            }
            else if(str[i]>='A' && str[i]<='Z'&& num[3]==0)
            {
                num[3]++;
            }
    }
    
    //成立返回1,不成立返回0
    for(i=0;i<4;i++)
        {
            sum +=num[i];
        }
    if(sum >=3)
        {
            return 0;
        }
        else
        {
           return 1; 
        }
}


int third_isillegal(char str[],int n)
{
    int i;
    int j;
    int num=0;
    
    for (i=3;i<n-2;i++)
    {
        for(j=0;j<i;j++)
        {
            if(str[j]==str[i] && str[j+1]==str[i+1]&& str[j+2]==str[i+2])
            {
                num++;
            }
        }
    }
    if(num != 0)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
全部评论

相关推荐

整顿职场的柯基很威猛:这种不可怕,最可怕的是夹在一帮名校里的二本选手,人家才是最稳的。
点赞 评论 收藏
分享
菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务