题解 | 密码强度等级

密码强度等级

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

//1. 输入一个字符串
//2. 定义一个得分函数,分数相加
//3. 输出,按输出的标准来
#include <bits/stdc++.h>
using namespace std;
bool ispunctt(char a){
    if(a>= 0x21 && a<=0x2F) return true;
    if(a>= 0x3A && a<=0x40) return true;
    if(a>= 0x5B && a<=0x60) return true;
    if(a>= 0x7B && a<=0x7E) return true;
    return false;
}
int defen1(string s){
    int m = 0;
    
        // 1. 密码长度这一块儿
        if(s.size()<=4){
            m = 5;
        }
        else if(s.size()>=5 &&s.size()<=7){
            m = 10;
        }
        else{
            m = 25;
        }
    
    return m;
}
int defen2(string s){
    int m = 0;

    bool a = false;
    bool A = false;
    for(int i = 0;i<s.size();i++){
        if(isupper(s[i])){
            A = true;
        }
        else if(islower(s[i])){
            a = true;
        }
    }
    if(a== true && A == true){
        m = 20;
    }
    else if( a== false && A == false){
        m = 0;
    }
    else{
        m = 10;
    }
    return m;
}
// 数字那一块儿
int defen3(string s){
    int m = 0;
    int t = 0;
    for(int i = 0;i<s.size();i++){
        if(s[i] >='0' &&s[i] <= '9'){
            m++;
        }
    }
    if(m == 0){
        t = 0;
    }
    else if(m == 1){
        t = 10;
    }
    else if(m>1){
        t =  20;
    }
    return t;
}
// 符号那一块儿
int defen4(string s){
    int m = 0;
    int t = 0;
    for(int i = 0;i<s.size();i++){
        if(ispunctt(s[i])){
            m++;
        }
    }
        if(m == 0){
            t = 0;
        }else if(m == 1){
            t = 10;
        }else if(m>1){
            t = 25;
        }
    return t;
}
// 奖励
int defen5(string m){
    int t = 0;
    bool daxie = false;
    bool xiaoxie = false;
    bool a = false;
    bool b = false;
    bool c = false;
    int mm  = 0;
    for(int i = 0;i<m.size();i++){
        if(isupper(m[i])){
            daxie = true;
            a = true;
        }
        else if(islower(m[i])){
            xiaoxie = true;
            a = true;
        }
        else if(isdigit(m[i])){
            b = true;
        }
        else if(ispunctt(m[i])){
            c = true;
        }
    }
  
    if(daxie == true && xiaoxie == true && b == true && c == true){
        t = 5;
    }else if(a == true && b == true && c == true){
        t = 3;
    }else if(a == true && b == true){
        t = 2;
    }
    else{
        t = 0;
    }
    return t;
}
int main(){
    string s;
    getline(cin,s);
    int m = defen1(s) + defen2(s) + defen3(s) + defen4(s) + defen5(s);
    if(m >= 90){
        cout << "VERY_SECURE"<< endl;
    }
    else if(m>= 80){
        cout << "SECURE" << endl;
    }
    else if(m>= 70){
        cout << "VERY_STRONG"<<endl;
    }
    else if(m >= 60){
        cout << "STRONG"<<endl;
    }
    else if(m >= 50){
        cout << "AVERAGE" << endl;
    }
    else if(m>= 25){
        cout <<"WEAK" << endl;
    }
    else{
        cout << "VERY_WEAK" << endl;
    }
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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