题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while((str = br.readLine()) != null) {
int score = 0;
int lengthScore = lengthCheck(str,score);
int letterScore = letterCheck(str,score);
int numberScore = numberCheck(str,score);
int simbleScore = simbleCheck(str,score);
int pensionScore = pensionCheck(letterScore, numberScore, simbleScore, score);
score = lengthScore + letterScore + numberScore + simbleScore + pensionScore;
// System.out.println("score = " + score);
result(score);
}
}
private static int lengthCheck(String str,int num) {
if(str.length() <= 4) {
num += 5;
}else if(str.length() >= 5 && str.length() <= 7) {
num += 10;
}else if(str.length() >= 8) {
num += 25;
}
// System.out.println("lengthCheck:"+num);
return num;
}
private static int letterCheck(String str,int num) {
if(str.replaceAll("[A-Za-z]+", "").length() == str.length()) {
num += 0;
// System.out.println("0");
}else if(str.replaceAll("[A-Z]+", "").length() == str.replaceAll("[A-Za-z]+", "").length()) {
num += 10;
// System.out.println("1");
}else if(str.replaceAll("[a-z]+", "").length() == str.replaceAll("[A-Za-z]+", "").length()) {
num += 10;
// System.out.println("2");
}
else {
num += 20;
// System.out.println("3");
}
// System.out.println("letterCheck:"+num);
return num;
}
private static int numberCheck(String str,int num) {
if(str.replaceAll("[0-9]+", "") == str) {
num += 0;
}else if (str.length()-str.replaceAll("[0-9]+", "").length() == 1) {
num += 10;
}else {
num += 20;
}
// System.out.println("numberCheck:"+num);
return num;
}
private static int simbleCheck(String str,int num) {
int count = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if(c >= 0x21 && c <= 0x2F) count++;
if(c >= 0x3A && c <= 0x40) count++;
if(c >= 0x5B && c <= 0x60) count++;
if(c >= 0x7B && c <= 0x7E) count++;
}
if(count == 0) num+= 0;
else if(count == 1) num +=10;
else num+=25;
// System.out.println("simbleCheck:"+num);
return num;
}
private static int pensionCheck(int flag1, int flag2 ,int flag3, int num) {
if(flag1 >= 20 && flag2 > 0 && flag3 > 0) {
num += 5;
}else if(flag1 > 0 && flag2 > 0 && flag3 > 0) {
num += 3;
}else if(flag1 > 0 && flag2 > 0) {
num += 2;
}
// System.out.println("pensionCheck:"+num);
return num;
}
private static void result(int n) {
if(n >= 90) System.out.println("VERY_SECURE");
else if(n >= 80) System.out.println("SECURE");
else if(n >= 70) System.out.println("VERY_STRONG");
else if(n >= 60) System.out.println("STRONG");
else if(n >= 50) System.out.println("AVERAGE");
else if(n >= 25) System.out.println("WEAK");
else if(n >= 0) System.out.println("VERY_WEAK");
}
}
查看8道真题和解析