分别验证长度、是否满足规则、是否包含重复的长度大于二的字串
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()){
String pw = in.nextLine();
if(getLength(pw) && getMatch(pw) && getStr(pw)){
System.out.println("OK");
}else {
System.out.println("NG");
}
}
}
/**
* 验证密码长度
* @param pw
* @return
*/
public static boolean getLength(String pw){
if(pw.length()<=8){
return false;
}else {
return true;
}
}
/**
* 验证密码是否符合规则
* @param pw
* @return
*/
public static boolean getMatch(String pw){
int a = 0, b = 0, e = 0, d = 0;
boolean err = true;
char[] pws = pw.toCharArray();
for (char c : pws) {
if(c>='0' && c<='9'){
a=1;
} else if (c >= 'a' && c <= 'z') {
b = 1;
} else if (c >= 'A' && c <= 'Z') {
d = 1;
} else if (c == ' ' || c == '\n') {
//存在空格或换行
err = false;
break;
} else {
e = 1;
}
}
if(err){
if((a+b+d+e)>=3){
return true;
}else {
// 不包含至少三种情况
return false;
}
}else {
// 包含空格和换行符
return false;
}
}
/**
* 验证是否有长度大于2的重复子字串
* 没有 返回true,有则返回false
* @return
*/
public static boolean getStr(String pw){
for (int i = 3; i < pw.length(); i++) {
if(pw.substring(i).contains(pw.substring(i-3,i))){
return false;
}
}
return true;
}
}