欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

密码验证合格程序

程序员文章站 2022-07-13 14:26:01
...

题目描述

密码要求:

1.长度超过8位

2.包括大小写字母.数字.其它符号,以上四种至少三种

3.不能有相同长度超2的子串重复

说明:长度超过2的子串

输入描述:

一组或多组长度超过2的子符串。每组占一行

输出描述:

如果符合要求输出:OK,否则输出NG

示例

输入:

021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000

 输出:

OK
NG
NG
OK

代码:

#include <iostream>
#include <string>
using namespace std;
bool leastThree(string StrVec);
bool sameTwo(string Str);
int main()
{
    string Str;
    while(cin>>Str)
    {
        if(Str.size()>8&&leastThree(Str)&&sameTwo(Str))
        {
            cout<<"OK"<<endl;
        }
        else
        {
            cout<<"NG"<<endl;
        }
       
    }
    
     return 0;
}


bool leastThree(string StrVec)
{
        bool small=false;
        bool big=false;
        bool digital=false;
        bool other=false;
        int leastNum=0;
        int count[4]={0};
        for(int j=0;j<StrVec.size();j++)
        {
                if((StrVec[j])>='A'&&(StrVec[j])<='Z')
                {
                    //leastNum++;
                    count[0]=1;
                    
                }                
                else if((StrVec[j])>='a'&&(StrVec[j])<='z')
                {
                    //leastNum++;
                    count[1]=1;
                }
                else if((StrVec[j])>='0'&&(StrVec[j])<='9')
                {
                    //leastNum++;
                    count[2]=1;
                }
                else
                {
                    //leastNum++;
                    count[3]=1;
                }
            
        }
    //big&&small&&digital
    //small&&digital&&other
    //big&&digital&&other
    //
            int all=0;
    for(int i=0;i<4;i++)
    {
        all+=count[i];
    }
            if(all>=3)
                    return true;
            else
                return false;
        
    
}


bool sameTwo(string Str)
{
    for(int i=0;i<Str.size()-3;i++)
    {
        string temp=Str.substr(i,3);
        if(Str.find(temp,i+3)==-1)//没找到相同的子串
        {
            
        }
        else
            return false;
    }
    
    return true;
}