【问题描述】
开发一个密码检查软件,密码要求:
长度超过8位
包括大小写字母.数字.其它符号,以上四种至少三种
不能有相同长度大于或等于2的子串重复
【输入形式】
一组或多组长度超过2的子符串。每组占一行
【输出形式】
如果符合要求输出:OK,否则输出NG
【样例输入】
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
【样例输出】
OK
NG
NG
OK
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); while (s.hasNext()) { String str = s.next(); if (str.length() < 8) { System.out.println("NG"); continue; } char[] chars = str.toCharArray(); int a=0,b = 0,c=0,d=0; for (int i = 0; i < str.length(); i++) { if (Character.isDigit(chars[i])) a=1; else if (Character.isUpperCase(chars[i])) b=1; else if (Character.isLowerCase(chars[i])) c=1; else d=1; } if (a+b+c+d<3) { System.out.println("NG") ; continue; } boolean flag=true; for (int i = 0; i <= str.length()-2; i++) { for (int j = i + 2; j <= str.length(); j++) { String substring = str.substring(i, j); // System.out.println(substring+" "+str.indexOf(substring)); if (str.indexOf(substring)!=i&&(j-str.indexOf(substring))>=(substring.length()*2)) { flag=false; } } } if(flag){ System.out.println("OK"); }else{ System.out.println("NG"); } } } }