华为机试——验证密码合格

来源:互联网 发布:网络数据分析工具 编辑:程序博客网 时间:2024/06/05 19:12

问题:验证密码合格

密码要求:

1.长度超过8位

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

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

#include<iostream>#include<string>#include<ctype.h>using namespace std;int LRS(string s)   //相同长度超过2的字符串重复{    int count=0,Max=0;    int len=s.size();    for(int i=0;i<len;i++)        for(int j=i+1;j<len;j++)        {            int start1=i,start2=j;            while(s[start1]==s[start2] && start1<len && start2<len)            {                count++;                start1++;                start2++;            }            if(Max<count) Max=count;        }    return Max;}bool Strong(string str){    int digit=0,lowAlpha=0,uppAlpha=0,others=0;    int num;    if(str.size()>8)    {        for(string::size_type i=0;i<str.size();i++)        {            if(isdigit(str[i])) digit++;            else if(islower(str[i])) lowAlpha++;            else if(isupper(str[i])) uppAlpha++;            else                 others++;        }        num=digit+lowAlpha+uppAlpha+others;        if(num>=3)        {            if(LRS(str)>2)                return false;            else                return true;        }    }    else         return false;}int main(){    string input;    while(cin>>input)    {        if(Strong(input))            cout<<"YES"<<endl;        else            cout<<"NO"<<endl;    }}
0 0
原创粉丝点击