import java.util.Scanner; 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()) { String line = in.nextLine(); if (line.length() <= 8) { System.out.println("NG"); continue; } if (!pattenMatched(line)) { System.out.println("NG"); continue; } //判断是否有长度大于等于3的重复子串,只需要判断大小为3就好了; boolean find = false; //从坐标0开始,不断往右移动窗口; for (int i = 0; i < line.length() - 3; i++) { //要比对的子串 String substring = line.substring(i, i + 3); //左侧不用比较,之前已经比较过了 //右侧的字串 String right = line.substring(i + 3); if (right.contains(substring)) { find = true; break; } } if (find) { System.out.println("NG"); } else { System.out.println("OK"); } } } private static boolean pattenMatched(String line) { int count = 0; Pattern upperCase = Pattern.compile("[A-Z]+"); Pattern lowerCase = Pattern.compile("[a-z]+"); Pattern number = Pattern.compile("\\d+"); Pattern others = Pattern.compile("[^A-Za-z0-9]+"); if (upperCase.matcher(line).find()) { count++; } if (lowerCase.matcher(line).find()) { count++; } if (number.matcher(line).find()) { count++; } if (others.matcher(line).find()) { count++; } return count >= 3; } }