题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
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.hasNext()) { // 注意 while 处理多个 case String pwd = in.next(); boolean flag = checkPwd(pwd); String outMessage = flag ? "OK" : "NG"; System.out.println(outMessage); } } private static boolean checkPwd(String pwd) { boolean checkLen = checkLen(pwd, 8); if (!checkLen) return false; boolean checkRule = checkRule(pwd); if (!checkRule) return false; return checkChild(pwd); } private static boolean checkChild(String pwd) { char[] charArray = pwd.toCharArray(); for (int i = 0; i < charArray.length - 5; i++) { for (int j = i + 3; j < charArray.length - 2; j++) { if (charArray[i] == charArray[j] && charArray[i + 1] == charArray[j + 1] && charArray[i + 2] == charArray[j + 2]) { return false; } } } return true; } private static boolean checkRule(String pwd) { char[] charArray = pwd.toCharArray(); int digit = 0, low = 0, upper = 0, other = 0; for (int i = 0; i < charArray.length; i++) { char ch = charArray[i]; if (Character.isDigit(ch)) { if (digit == 0) { ++digit; } } else if (Character.isLowerCase(ch)) { if (low == 0) { ++low; } } else if (Character.isUpperCase(ch)) { if (upper == 0) { ++upper; } } else { if (other == 0) { ++other; } } } return digit + low + upper + other > 2; } private static boolean checkLen(String pwd, int minLen) { return pwd.length() > minLen; } }