题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
String s = "";
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
s = in.next();
}
int sum = sum(s);
String m =match(sum);
System.out.println(m);
}
private static int len(String s) {
int len = s.length();
if (len <= 4) {
return 5;
} else if (len >= 8) {
return 25;
}
return 10;
}
private static int word(String s) {
int len = s.length();
boolean allMun = true;
boolean hasLow = false;
boolean hasCap = false;
for (int i = 0; i < len; i++) {
char c = s.charAt(i);
if (c > '9' || c < '0') {
allMun = false;
}
if (c >= 'a' && c <= 'z') {
hasLow = true;
}
if (c >= 'A' && c <= 'Z') {
hasCap = true;
}
}
if (allMun) {
return 0;
} else if (hasCap && hasLow) {
return 20;
}
return 10;
}
private static int num(String s) {
int len = s.length();
int numCount = 0;
for (int i = 0; i < len; i++) {
char c = s.charAt(i);
if (c >= '0' && c <= '9') {
numCount++;
if (numCount > 1) {
break;
}
}
}
if (numCount == 0) {
return 0;
} else if (numCount > 1) {
return 20;
}
return 10;
}
private static int sign(String s) {
int len = s.length();
int signCount = 0;
for (int i = 0; i < len; i++) {
char c = s.charAt(i);
if (!(c >= '0' && c <= '9') && !(c >= 'A' && c <= 'Z') && !(c >= 'a' &&
c <= 'z')) {
signCount++;
if (signCount > 1) {
break;
}
}
}
if (signCount == 0) {
return 0;
} else if (signCount > 1) {
return 25;
}
return 10;
}
private static int award(String s) {
int len = s.length();
int numCount = 0;
int lowCount = 0;
int caCount = 0;
int signCount = 0;
for (int i = 0; i < len; i++) {
char c = s.charAt(i);
if (c >= '0' && c <= '9') {
numCount++;
} else if (c >= 'A' && c <= 'Z') {
caCount++;
} else if (c >= 'a' && c <= 'z') {
lowCount++;
} else {
signCount++;
}
if (numCount > 0 && lowCount > 0 && caCount > 0 && signCount > 0) {
break;
}
}
if (numCount > 0 && lowCount > 0 && caCount > 0 && signCount > 0) {
return 5;
} else if ((lowCount > 0 || caCount > 0) && numCount > 0 && signCount > 0) {
return 3;
} else if ((lowCount > 0 || caCount > 0) && numCount > 0) {
return 2;
}
return 0;
}
private static int sum(String s){
return len(s) + word(s) + num(s) + sign(s) + award(s);
}
private static String match(int score) {
if (score >= 90) {
return "VERY_SECURE";
} else if (score >= 80) {
return "SECURE";
} else if (score >= 70) {
return "VERY_STRONG";
} else if (score >= 60) {
return "STRONG";
} else if (score >= 50) {
return "AVERAGE";
} else if (score >= 25) {
return "WEAK";
} else {
return "VERY_WEAK";
}
}
}
雪域灰灰刷题笔记 文章被收录于专栏
雪域灰灰刷题笔记
查看18道真题和解析