题解 | #密码强度等级#

密码强度等级

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

#include <asm-generic/errno.h>
#include <bits/stdc++.h>
#include <string>
using namespace std;

int jl(string m) {
    int sz = 0, fh = 0, up = 0, min = 0, zm = 0;

    for (char i : m) {
        if ((i >= 'a' && i <= 'z') || (i >= 'A' &&
                                       i <= 'Z')) {//如果是字母
            if (i >= 'a' && i <= 'z') { //小写
                min++;
            }  else { //大写
                up++;
            }
            zm++;

        } else if (i >= '0' && i <= '9') {//如果是数字
            sz++;
        } else {  //如果是符号
            fh++;
        }
    }


    if (up != 0 && min != 0 && sz != 0 && fh != 0) {
        return 5;
    } else if (zm != 0 && fh != 0 && sz != 0) {
        return 3;
    } else if (sz != 0 && zm != 0) {
        return 2;
    }


    return 0;

}





//符号
int fh(string m) {
    int fh = 0;

    for (char i : m) {
        if ((i >= 'a' && i <= 'z') || (i >= 'A' && i <= 'Z')) {

        } else if (i >= '0' && i <= '9') {

        } else {  //如果是符号
            fh++;
        }
    }
    if (fh == 0) {
        return 0;
    } else if (fh == 1) {
        return 10;
    } else if (fh > 1) {
        return 25;
    }

    return 0;
}



//密码数字
int sz(string m) {
    int n = 0;
    for (char i : m) {
        if (i >= '0' && i <= '9') {//如果当前字符是数字
            n++;
        }
    }

    if (n == 0) {
        return 0;
    } else if (n == 1) {
        return 10;
    } else {
        return 20;
    }

}




//密码长度
int len(string m) {
    if (m.size() <= 4) {
        return 5;
    } else if (m.size() >= 5 && m.size() <= 7) {
        return 10;
    } else {
        return 25;
    }
}


//密码字母
int zm(string m) {
    int up = 0; //大写
    int min = 0; //小写
    for (char i : m) {
        if (i >= 'a' && i <= 'z') { //小写
            min++;
        } else if (i >= 'A' && i <= 'Z') { //大写
            up++;
        }
    }
    if (up == 0 && min == 0) { //没有字母
        return 0;
    } else if (up == 0 || min == 0) { //没有大写或小写
        return 10;
    } else { //都有
        return 20;
    }


}

string pf(int fen) {
    if (fen >= 90) {
        return "VERY_SECURE";
    } else if (fen <= 89 && fen >= 80) {
        return "SECURE";
    } else if (fen <= 79 && fen >= 70) {
        return "VERY_STRONG";
    } else if (fen <= 69 && fen >= 60) {
        return "STRONG";
    } else if (fen <= 59 && fen >= 50) {
        return "AVERAGE";
    } else if (fen <= 49 && fen >= 25) {
        return "WEAK";
    } else if (fen <= 24 && fen >= 0) {
        return "VERY_WEAK";
    }
    return"";
}
int main() {
    string m;
    cin >> m;

    int fen = 0;
    fen += len(m);

    fen += zm(m);
  
    fen += sz(m);
  
    fen += fh(m);

    fen += jl(m);
   
  //  cout << fen<<endl;

  
    cout << pf(fen);


}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务