题解 | #密码强度等级#
密码强度等级
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"); } }