题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
import java.util.Scanner; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()){ int category=0; String target = in.next(); //判断长度>8 if (checkLength((target))){ System.out.println("NG"); continue; } //判断是否包含三种元素 if (!checkClass(target)){ System.out.println("NG"); continue; } //判断是否有重复子串 if (checkRule(target,0,3)){ System.out.println("NG"); continue; } System.out.println("OK"); } } private static boolean checkRule(String target, int str, int end) { if (end >= target.length()) { return false; } if (target.substring(end).contains(target.substring(str, end))) { return true; } else { return checkRule(target, str + 1, end + 1); } } private static boolean checkClass(String str) { int count = 0; //大写字母 Pattern p1 = Pattern.compile("[A-Z]"); if (p1.matcher(str).find()) { count++; } //小写字母 Pattern p2 = Pattern.compile("[a-z]"); if (p2.matcher(str).find()) { count++; } //数字 Pattern p3 = Pattern.compile("[0-9]"); if (p3.matcher(str).find()) { count++; } //字符 Pattern p4 = Pattern.compile("[^a-zA-Z0-9\\x0a]"); if (p4.matcher(str).find()) { count++; } if (count >= 3) { return true; } return false; } private static boolean checkLength(String target) { return target.length() <= 8; } }
花费一小时才解决