题目:
- 密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串 - 输入描述:
一组或多组长度超过2的子符串。每组占一行 - 输出描述
如果符合要求输出:OK,否则输出NG
- 密码要求:
例子:
输入: 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000 输出: OK NG NG OK
代码:对三种情况分别进行判断,其中对于第二个要求,可以用一个大小为4的数组来记录字符串的种类数
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
String value = scan.nextLine();
//第一个要求
if(value == null || value.length() <= 8){
System.out.println("NG");
}else{
int[] category = new int[4];
for(int i = 0; i < value.length(); i++){
if(value.charAt(i) <= 'Z' && value.charAt(i) >= 'A'){
category[0] = 1;
}else if(value.charAt(i) <= 'z' && value.charAt(i) >= 'a'){
category[1] = 1;
}else if(value.charAt(i) <= '9' && value.charAt(i) >= '0'){
category[2] = 1;
}else{
category[3] = 1;
}
}
if(category[0] + category[1] + category[2] + category[3] < 3){
System.out.println("NG");
}else{
System.out.println(isValidSubString(value));
}
}
}
}
private static String isValidSubString(String str){
for(int i = 3; i < str.length();i++){
String str1 = str.substring(i-3,i);
String str2 = str.substring(i,str.length());
if(str2.contains(str1)){
return "NG";
}
}
return "OK";
}
}