题目描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
输入描述
一组或多组长度超过2的子符串。每组占一行
输出描述
如果符合要求输出:OK,否则输出NG
输入例子
021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000
输出例子
OK NG NG OK
测试代码
1 import java.util.Scanner; 2 3 public class Main { 4 // 长度超过8位 5 public static boolean checkLength(String password) { 6 if(password.equals(null) || password.length() <= 8){ 7 return false; 8 } 9 return true; 10 } 11 // 包括大小写字母.数字.其它符号,以上四种至少三种 12 public static boolean checkCharKinds(String password) { 13 int uppercase = 0, lowercase = 0, digit = 0, other = 0; 14 char[] ch = password.toCharArray(); 15 for(int i = 0; i < password.length(); i++) { 16 if(Character.isUpperCase(ch[i])) { 17 uppercase = 1; 18 } else if(Character.isLowerCase(ch[i])) { 19 lowercase = 1; 20 } else if(Character.isDigit(ch[i])) { 21 digit = 1; 22 } else { 23 other = 1; 24 } 25 } 26 if(uppercase + lowercase + digit + other >= 3) { 27 return true; 28 } 29 return false; 30 } 31 // 不能有相同长度超2的子串重复 32 public static boolean checkCharRepeat(String password) { 33 for(int i = 0; i < password.length() - 2; i++) { 34 String str = password.substring(i, i + 3); 35 for(int j = i + 1; j < password.length() - 2; j++) { 36 if(password.substring(j).contains(str)) { 37 return false; 38 } 39 } 40 } 41 return true; 42 } 43 44 public static void main(String[] args) { 45 Scanner sc = new Scanner(System.in); 46 while (sc.hasNextLine()) { 47 String password = sc.nextLine(); 48 if(checkLength(password) && checkCharKinds(password) && checkCharRepeat(password)){ 49 System.out.println("OK"); 50 } else { 51 System.out.println("NG"); 52 } 53 } 54 sc.close(); 55 } 56 }
时间: 2024-10-14 05:25:42