题解 | #密码强度等级#
密码强度等级
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"; } } }
雪域灰灰刷题笔记 文章被收录于专栏
雪域灰灰刷题笔记