题解 | 密码强度等级

密码强度等级

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

#include <cctype>
#include <iostream>
using namespace std;

int pwd_len_score(int len) {
    int score = 0;
    if ( len <= 4)
        score = 5;
    else if ( len <= 7)
        score = 10;
    else
        score = 25;
    return score;
}

int letter_score(int cnt_upper, int cnt_lower) {
    int score = 0;
    if (((cnt_upper > 0) && (cnt_lower == 0)) || ((cnt_upper == 0) &&
            (cnt_lower > 0))) {
        score = 10;
    } else if ((cnt_upper > 0) && (cnt_lower > 0)) {
        score = 20;
    }
    return score;
}

int digit_score( int cnt_digit ) {
    int score = 0;
    if (cnt_digit == 1)
        score = 10;
    else if (cnt_digit > 1)
        score = 20;
    return score;
}

int symbol_score(int cnt_symbol) {
    int score = 0;
    if ( cnt_symbol == 1)
        score = 10;
    else if ( cnt_symbol > 1)
        score = 25;
    return score;
}

int reward_score( int cnt_lower, int cnt_upper, int cnt_digit, int cnt_symbol) {
    int score = 0;
    if (cnt_lower > 0 && cnt_upper > 0 && cnt_digit > 0 && cnt_symbol > 0)
        score = 5;
    else if ((cnt_lower > 0 || cnt_upper > 0) && (cnt_digit > 0) &&
             (cnt_symbol > 0))
        score = 3;
    else if ((cnt_lower > 0 || cnt_upper > 0) && cnt_digit > 0)
        score = 2;
    return score;
}

void get_security_level( int score ) {
    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 {
        cout << "VERY_WEAK" << endl;
    }
}

int main() {
    string s;
    while ( getline(cin, s) ) {
        int lower = 0, upper = 0, digit = 0, symbol = 0;
        for (char i : s) {
            if (islower(i)) //小写字母
                ++lower;
            else if (isupper(i)) //大写字母
                ++upper;
            else if (isdigit(i)) //数字
                ++digit;
            else
                ++symbol;   //符号
        }
        int sum_score = pwd_len_score(s.size()) + letter_score( lower,
                        upper) + digit_score(digit) + symbol_score(symbol) + reward_score(lower, upper,
                                digit, symbol);
        get_security_level(sum_score);
    }
    return 0;
}

全部评论

相关推荐

1.自我介绍2.介绍一下mcp,&nbsp;skills3.了解react哪些状态管理库4.对话是sse还是什么?是用fetch还是EventSource?5.ts中的any&nbsp;和&nbsp;unknown讲一讲6.是直接用组件库的组件还是自己封装了一些别的7.代码输出题1function&nbsp;main()&nbsp;{{var&nbsp;a&nbsp;=&nbsp;1let&nbsp;b&nbsp;=&nbsp;2}console.log(a);console.log(b);}main()console.log(a);8.什么是块级作用域&nbsp;全局作用域&nbsp;函数作用域9.代码输出题2for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0;i&nbsp;&amp;lt;&nbsp;5;i++)&nbsp;{setTimeout(()&nbsp;=&amp;gt;&nbsp;{console.log(i);},&nbsp;100);}10.代码输出题3for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&amp;lt;&nbsp;5;&nbsp;i++){function&nbsp;printText(temp)&nbsp;{setTimeout(()&nbsp;=&amp;gt;&nbsp;{console.log(temp);},&nbsp;100);}printText(i)}11.代码输出题4for(var&nbsp;i&nbsp;=&nbsp;0;i&nbsp;&amp;lt;&nbsp;5;i++){function&nbsp;printText(temp)&nbsp;{var&nbsp;temp&nbsp;=&nbsp;isetTimeout(()&nbsp;=&amp;gt;&nbsp;{console.log(temp);},&nbsp;100);}printText(i)}12.代码输出题5for(var&nbsp;i&nbsp;=&nbsp;0;i&nbsp;&amp;lt;&nbsp;5;i++){function&nbsp;printText(temp)&nbsp;{setTimeout(()&nbsp;=&amp;gt;&nbsp;{var&nbsp;temp&nbsp;=&nbsp;iconsole.log(temp);},&nbsp;100);}printText(i)}13.点击控制台输出题export&nbsp;default&nbsp;function&nbsp;App()&nbsp;{const&nbsp;[count,&nbsp;setCount]&nbsp;=&nbsp;useState(0)console.log('render',count)return&nbsp;(&lt;div&gt;&lt;h1&gt;{count}&lt;/h1&gt;{setCount(count&nbsp;+&nbsp;1)setTimeout(()&nbsp;=&amp;gt;&nbsp;console.log('setTimeout',&nbsp;count),&nbsp;1000)}}&amp;gt;+1&lt;/div&gt;)}//这个组件点击按钮后,控制台的输出顺序和值如下://&nbsp;1.&nbsp;render&nbsp;1&nbsp;(组件重新渲染,&nbsp;count&nbsp;更新为&nbsp;1)//&nbsp;2.&nbsp;setTimeout&nbsp;0&nbsp;(1秒后输出,注意这里是&nbsp;0&nbsp;而不是&nbsp;1)14.算法:给有序数组arr&nbsp;=&nbsp;[-4,&nbsp;-1,&nbsp;0,&nbsp;3,&nbsp;5],返回平方后的排序//&nbsp;有序数组平方后排序const&nbsp;arr&nbsp;=&nbsp;[-4,&nbsp;-1,&nbsp;0,&nbsp;3,&nbsp;5]function&nbsp;solution(arr)&nbsp;{const&nbsp;len&nbsp;=&nbsp;arr.lengthconst&nbsp;result&nbsp;=&nbsp;new&nbsp;Array(len)let&nbsp;left&nbsp;=&nbsp;0let&nbsp;right&nbsp;=&nbsp;len&nbsp;-&nbsp;1let&nbsp;index&nbsp;=&nbsp;len&nbsp;-&nbsp;1while&nbsp;(left&nbsp;&amp;lt;=&nbsp;right)&nbsp;{if&nbsp;(arr[left]&nbsp;*&nbsp;arr[left]&nbsp;&amp;gt;&nbsp;arr[right]&nbsp;*&nbsp;arr[right])&nbsp;{result[index]&nbsp;=&nbsp;arr[left]&nbsp;*&nbsp;arr[left]left++}&nbsp;else&nbsp;{result[index]&nbsp;=&nbsp;arr[right]&nbsp;*&nbsp;arr[right]right--}index--}return&nbsp;result}console.log(solution(arr));15.反问
查看14道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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