题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextLine()) { // 注意 while 处理多个 case String s = in.nextLine(); char[] arr = s.toCharArray(); int grade = 0; boolean char1Flag = false; boolean char2Flag = false; boolean numFlag = true; boolean scharFlag = true; //1. 长度 if (s.length() <= 4) { grade += 5; } else if (s.length() >= 8) { grade += 25; } else { grade += 10; } // System.out.println(grade); //2. 字母 if (s.matches(".*[a-z].*") && s.matches(".*[A-Z].*")) { grade += 20; char1Flag = true; } else if (s.matches(".*[a-z].*") || s.matches(".*[A-Z].*")) { grade += 10; char2Flag = true; } // System.out.println(grade); //3.数字 if (s.matches(".*[0-9]{1,}.*[0-9]{1,}.*")) { grade += 20; } else if (s.matches(".*[0-9].*")) { grade += 10; } else { numFlag = false; } // System.out.println(grade); //4. 符号 // !"#$%&'()*+,-./ (ASCII码:0x21~0x2F) 33~47 // :; // <= > ? @ (ASCII码:0x3A~0x40) 58 ~ 64 // [\] ^ _` (ASCII码:0x5B~0x60) 91~96 //{|}~ (ASCII码:0x7B~0x7E) 123~126 int count = 0; for(int i = 0; i < arr.length; i++){ int temp = arr[i]; if(temp >= 33 && temp <= 47 ||temp >= 58 && temp <= 64 ||temp >= 91 && temp <= 96 ||temp >= 123 && temp <= 126 ){ count++; if(count == 2){ break; } } } if(count == 2){ grade += 25; }else if(count == 1){ grade += 10; }else{ scharFlag = false; } // System.out.println(grade); //5. if(char1Flag && numFlag && scharFlag){ grade += 5; }else if(char2Flag && numFlag && scharFlag){ grade += 3; }else if(char2Flag && numFlag){ grade += 2; } // System.out.println(grade); //这个结果集也可以使用map匹配 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"); } } } }