import java.util.Scanner; import java.util.regex.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); Pattern blank = Pattern.compile("[ \n]"); Pattern upper = Pattern.compile("[A-Z]"); Pattern lower = Pattern.compile("[a-z]"); Pattern digit = Pattern.compile("[0-9]"); Pattern other = Pattern.compile("[^A-Za-z0-9]"); Pattern r = Pattern.compile("(.{3,}).*\\1"); while (in.hasNextLine()) { String line = in.nextLine(); //1.超过8位 if (line.length() <= 8) { System.out.println("NG"); continue; } //2.包括大小写字母.数字.其它符号,以上四种至少三种 //2.1 不包含空格或换行 if (blank.matcher(line).find()) { System.out.println("NG"); continue; } //2.2 大写字母 int sum = 0; if (upper.matcher(line).find()) { sum++; } //2.3 小写字母 if (lower.matcher(line).find()) { sum++; } //2.4 数字 if (digit.matcher(line).find()) { sum++; } //2.5 其他字符 if (other.matcher(line).find()) { sum++; } if (sum < 3) { System.out.println("NG"); continue; } //3.不能有长度大于2的包含公共元素的子串重复 if (r.matcher(line).find()) { System.out.println("NG"); continue; } //4.满足全部条件 System.out.println("OK"); } } }