C/C++编程题之密码验证合格程序

在牛客上刷到密码验证合格程序,现在将通过的代码贴一下,供大家参考。

密码要求:

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

猜你喜欢

转载自blog.csdn.net/lzyzuixin/article/details/111387158