题解 | #密码强度等级#

密码强度等级

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

全部评论

相关推荐

牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务