1、 校验长度
2、 校验字符种类
3、 校验子串是否有大于2的
import java.util.*; public class Main{ public static void main(String [] args){ testPassword(); } public static void testPassword(){ Scanner scan = new Scanner(System.in); while(scan.hasNext()){ String password = scan.nextLine(); int len = password.length(); // 校验长度 if(len < 9){ System.out.println("NG"); continue; } // 校验字符种类 Set<String> set = new HashSet<>(); for(int i = 0; i <len; i++){ char ch = password.charAt(i); if('a' <= ch && ch<='z'){ set.add("flag1"); }else if('A' <= ch && ch<='Z'){ set.add("flag2"); }else if('0' <= ch && ch<='9'){ set.add("flag3"); }else{ set.add("flag4"); } if(set.size() >= 3){ break; } } if(set.size() < 3){ System.out.println("NG"); continue; } // 校验子串是否有大于2的 String str = ""; int l=0; int r =3; boolean falg = false; while(r <= len){ str = password.substring(l,r); String temp = password.substring(r); if(temp.contains(str)){ falg = true; break; } l++; r++; } if(falg){ System.out.println("NG"); }else{ System.out.println("OK"); } } } }