题解 | HJ87#密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { // HJ87 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); char[] chars = str.toCharArray(); //长度评分 // 一、密码长度: // 5 分: 小于等于4 个字符 // 10 分: 5 到7 字符 // 25 分: 大于等于8 个字符 int lengthMark; if (chars.length <= 4) { lengthMark = 5; } else if (chars.length <= 7) { lengthMark = 10; } else { lengthMark = 25; } // 二、字母: // 0 分: 没有字母 // 10 分: 密码里的字母全都是小(大)写字母 // 20 分: 密码里的字母符合”大小写混合“ int lowerNum = 0; int upperNum = 0; for (int i = 0; i < chars.length; i++) { if (65 <= chars[i] && chars[i] <= 90) { upperNum++; } else if (97 <= chars[i] && chars[i] <= 122) { lowerNum++; } } //判断字母评分 int CharacterMark; int CharaSum = lowerNum + upperNum; if (CharaSum == 0) { CharacterMark = 0; } else if (CharaSum == lowerNum || CharaSum == upperNum) { CharacterMark = 10; } else { CharacterMark = 20; } //三、数字: // 0 分: 没有数字 // 10 分: 1 个数字 // 20 分: 大于1 个数字 int Num = 0; for (int i = 0; i < chars.length; i++) { if (48 <= chars[i] && chars[i] <= 57) { Num++; } } //数字评分 int NumberMark; if (Num == 0) { NumberMark = 0; } else if (Num == 1) { NumberMark = 10; } else { NumberMark = 20; } // 四、符号: // 0 分: 没有符号 // 10 分: 1 个符号 // 25 分: 大于1 个符号 int SignalNum = 0; for (int i = 0; i < chars.length; i++) { if (122 < chars[i] || chars[i] < 48 || (58 <= chars[i] && chars[i] <= 64)) { SignalNum++; } } //符号评分 int SignalMark; if (SignalNum == 0) { SignalMark = 0; } else if (SignalNum == 1) { SignalMark = 10; } else { SignalMark = 25; } // 五、奖励(只能选符合最多的那一种奖励): // 2 分: 字母和数字 // 3 分: 字母、数字和符号 // 5 分: 大小写字母、数字和符号 int awardMark = 0; if (lowerNum > 0 && upperNum > 0 && Num > 0 && SignalNum > 0) { awardMark = 5; } else if ((lowerNum > 0 && upperNum == 0 && Num > 0 && SignalNum > 0) || (upperNum > 0 && lowerNum == 0 && Num > 0 && SignalNum > 0)) { awardMark = 3; } else if (SignalNum == 0 && Num > 0 && CharaSum > 0) { awardMark = 2; } //总分 int sum = lengthMark + NumberMark + CharacterMark + SignalMark + awardMark; if (sum >= 90) { // >= 90: 非常安全 System.out.println("VERY_SECURE"); } else if (sum >= 80) { // >= 80: 安全(SECURE) System.out.println("SECURE"); } else if (sum >= 70) { // >= 70: 非常强( VERY_STRONG) System.out.println("VERY_STRONG"); } else if (sum >= 60) { // >= 60: 强(STRONG) System.out.println("STRONG"); } else if (sum >= 50) { //>= 50: 一般(AVERAGE) System.out.println("AVERAGE"); } else if (sum >= 25) { //>= 25: 弱(WEAK) System.out.println("WEAK"); } else { //>= 0: 非常弱(VERY_WEAK) System.out.println("VERY_WEAK"); } } }
没什么难度 这个通过率不应该