题解 | #密码强度等级#

密码强度等级

https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361

细心就行了
#include<iostream>
#include<string>
#include <cstdio>
using namespace std;

int main(){
    string str;
    while(getline(cin,str)){
        int len=str.size();
        int score=0;
        //1密码长度
        if(len<=4) score+=5;
        else if(len>=5&&len<=7) score+=10;
        else  if(len>=8)score+=25;
        //字母
        int small_char=0;
        int big_char=0;
        for(int i=0;i<len;i++){
            if(islower(str[i])) small_char++;
            else if(isupper(str[i])) big_char++;
        }
        
        //密码里的字母全都是小写字母
        if(small_char==0&&big_char==0) score+=0;
        else if((small_char!=0&&big_char==0)||(small_char==0&&big_char!=0)) score+=10;
        else if(small_char!=0&&big_char!=0) score+=20;
        int letternum=small_char+big_char;
        //数字
        int num_dg=0;
        for(int i=0;i<len;i++){
            if(isdigit(str[i])) num_dg++;
        }
        if(num_dg==0) score+=0;
        else if(num_dg==1) score+=10;
        else if(num_dg>1)score+=20;
        //符号
        int fuhao_num;
        fuhao_num=len-small_char-big_char-num_dg;
        if(fuhao_num==0) score+=0;
        else if(fuhao_num==1) score+=10;
        else if(fuhao_num>1)score+=25;
        //奖励(只能选符合最多的那种奖励)
        int pay1=0,pay2=0,pay3=0;
        if(letternum!=0&&num_dg!=0) {
            pay1=2;
        }
        if(letternum!=0&&num_dg!=0&&fuhao_num!=0) {
            pay2=3;;
        }
        if(small_char!=0&&big_char!=0&&num_dg!=0&&fuhao_num!=0) {
           pay3=5;
        }
        int maxpay=max(max(pay1,pay2),pay3);
        score+=maxpay;
        //最后评分
        if(score>=90) cout<<"VERY_SECURE"<<endl;
        else if(score>=80) cout<<"SECURE"<<endl;
        else if(score>=70) cout<<"VERY_STRONG"<<endl;
        else if(score>=60) cout<<"STRONG"<<endl;
        else if(score>=50) cout<<"AVERAGE"<<endl;
        else if(score>=25) cout<<"WEAK"<<endl;
        else if(score>=0) cout<<"VERY_WEAK"<<endl;    
    }
    system("pause");
    return 0;
}

全部评论

相关推荐

06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
点赞 评论 收藏
分享
程序员小白条:你不是有一段实习了吗,现在找中大厂实习?过段时间要秋招了
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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