题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
就是一层一层判断,逻辑对了就行
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int grade = 0;
//密码长度
if (s.length() <= 4) {
grade = 5;
} else if (s.length() <= 7) {
grade = 10;
} else {
grade = 25;
}
//字母
boolean flag1 = true;
boolean flag2 = true;
boolean flag3 = true;
int len = 0;//表示数字的长度
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch >= 'a' && ch <= 'z') {
flag1 = false;
flag2 = false;//表示有小写
continue;
}
if (ch >= 'A' && ch <= 'Z') {
flag1 = false;
flag3 = false;//表示有大写
}
if (ch >= '0' && ch <= '9') {
len++;
}
}
if (flag1) {
grade = grade;
} else if (flag2 == false && flag3 == true) {
grade += 10;
} else if (flag2 == true && flag3 == false) {
grade += 10;
} else if (flag2 == false && flag3 == false) {
grade += 20;
}
//数字
if (len == 1) {
grade += 10;
} else if (len > 1) {
grade += 20;
}
//符号
int count = 0;
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if ((ch >= '!' && ch <= '/') || (ch >= ':' && ch <= '@') || (ch >= '[' &&
ch <= '`') || (ch >= '{' && ch <= '~')) {
count++;
}
}
if (count == 1) {
grade += 10;
} else if (count > 1) {
grade += 25;
}
if (count > 0 && len > 0 && !flag2 && !flag3) {
grade += 5;
} else if ((!flag2 && count > 0 && len > 0) || (!flag3 && count > 0 &&
len > 0)) {
grade += 3;
} else if (!flag1 && len > 0) {
grade += 2;
}
if (grade >= 90) {
System.out.println("VERY_SECURE");
} else if (grade >= 80) {
System.out.println("SECURE");
} else if (grade >= 70) {
System.out.println("VERY_STRONG");
} else if (grade >= 60) {
System.out.println("STRONG");
} else if (grade >= 50) {
System.out.println("AVERAGE");
} else if (grade >= 25) {
System.out.println("WEAK");
} else if (grade >= 0) {
System.out.println("VERY_WEAK");
}
}
}
查看10道真题和解析
顺丰集团工作强度 274人发布