题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input = in.next();
int score = check(input);
evaluate(score);
}
private static void evaluate(int score) {
//评价
if (score >= 90) {
System.out.println("VERY_SECURE");
} else if (score >= 80) {
System.out.println("SECURE");
} else if (score >= 70) {
System.out.println("VERY_STRONG");
} else if (score >= 60) {
System.out.println("STRONG");
} else if (score >= 50) {
System.out.println("AVERAGE");
} else if (score >= 25) {
System.out.println("WEAK");
} else if (score >= 0) {
System.out.println("VERY_WEAK");
}
}
private static int check(String input) {
int letterUpper = 0;//记录大写字母数
int letterLower = 0;//记录小写字母数
int number = 0;//记录数字数
int symbol = 0;//记录符号数
int score = 0;//记录总分
int length = input.length();
if (length <= 4) {
score += 5;
} else if (length >= 5 && length <= 7) {
score += 10;
} else {
score += 25;
}
for (int i = 0; i < length; i++) {
char c = input.charAt(i);
if (c >= '0' && c <= '9') {
number++;
} else if (c >= 'A' && c <= 'Z') {
letterUpper++;
} else if (c >= 'a' && c <= 'z') {
letterLower++;
} else {
symbol++;
}
}
if ((letterUpper == 0 && letterLower > 0) || (letterUpper > 0 &&
letterLower == 0)) {
score += 10;
} else if (letterUpper > 0 && letterLower > 0) {
score += 20;
}
if (number == 1) {
score += 10;
} else if (number > 1) {
score += 20;
}
if (symbol == 1) {
score += 10;
} else if (symbol > 1) {
score += 25;
}
if (letterUpper > 0 && letterLower > 0 && number > 0 && symbol > 0) {
score += 5;
} else if (number > 0 && symbol > 0 && (letterUpper > 0 || letterLower > 0)) {
score += 3;
} else if (number > 0 && (letterUpper > 0 || letterLower > 0)) {
score += 2;
}
return score;
}
}
解题思路:
1, 首先根据判断条件, 计算得出当前分数;
2, 根据分数结果, 进行评价输出密码等级

