题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
#include <climits>
#include <iostream>
using namespace std;
string flat(int num)
{
if (num >= 90) return "VERY_SECURE";
else if (num < 90 && num >= 80) return "SECURE";
else if (num < 80 && num >= 70) return "VERY_STRONG";
else if (num < 70 && num >= 60) return "STRONG";
else if (num < 60 && num >= 50) return "AVERAGE";
else if (num < 50 && num >= 25) return "WEAK";
else if (num < 25 && num >= 0) return "VERY_WEAK";
else {return "ERROR";}
}
int ComputeScore(string s)
{
int score1 = 0, score2 = 0, score3 = 0, score4 = 0, score5 = 0;
for (int i = 0; i < s.length(); i++){
if (score1 < 10 && s[i] >= 'a' && s[i] <= 'z'){
score1 = 10;
continue;
}
if (score2 < 10 && s[i] >= 'A' && s[i] <= 'Z'){
score2 = 10;
continue;
}
if (score3 < 20 && s[i] >= '0' && s[i] <= '9' ){
score3 += 10;
continue;
}
if (score4 < 25 && (s[i] >= 0x21 && s[i] <= 0x2F)
|| (s[i] >= 0x3A && s[i] <= 0x40)
|| (s[i] >= 0x5B && s[i] <= 0x60)
|| (s[i] >= 0x7B && s[i] <= 0x7E))
{
if (score4 < 10) score4 += 10;
else {score4 = 25;}
continue;
}
}
if ((score1 != 0 || score2 != 0) && score3 != 0){
score5 += 2;
if (score4 != 0){
score5 += 1;
if (score1 != 0 && score2 != 0){
score5 += 2;
}
}
}
// cout << score1 << ","<< score2 << "," << score3 << "," << score4 << "," << score5 <<endl;
// cout << ans <<endl;
return score1 + score2 + score3 + score4 + score5;
}
int main() {
string input,ans;
int score = INT_MIN;
while (cin >> input){
int len = input.length();
if (len <= 4) score = 5;
else if (len > 4 && len <= 7) score = 10;
else if (len > 7) score = 25;
else {}
// cout <<score <<endl;
int num = ComputeScore(input);
ans = flat(score + num);
}
cout << ans << endl;
return 0;
}
// 64 位输出请用 printf("%lld")
