- 校验字符串不能小于8
- 校验数字通过Character.isDigit()方法
- 校验大写字母通过:Character.isLetter()和Character.isUpperCase()
- 校验小写字母通过:Character.isLetter()和Character.isLowerCase()
- 特殊字符:非数字、非字符串即可
- 重复字符串,通过两层循环,内层循环大于等于3时开始截取,并判断包含,为true则跳出
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
String password = in.nextLine();
if (password.length() < 8) {
System.out.println("NG");
continue;
}
boolean isDigit = false;
boolean isUpperCase = false;
boolean isLowerCase = false;
boolean specialCharacter = false;
boolean checksubStrErr = false;
int checkNum = 0;
char[] charArray = password.toCharArray();
for (int i = 0; i < charArray.length; i++) {
char val = charArray[i];
if (Character.isDigit(val) && !isDigit) {
isDigit = Boolean.TRUE;
checkNum++;
} else if (Character.isLetter(val) && Character.isUpperCase(val) && !isUpperCase) {
isUpperCase = Boolean.TRUE;
checkNum++;
} else if (Character.isLetter(val) && Character.isLowerCase(val) && !isLowerCase) {
isLowerCase = Boolean.TRUE;
checkNum++;
} else if (!Character.isDigit(val) && !Character.isLetter(val) && !specialCharacter) {
specialCharacter = Boolean.TRUE;
checkNum++;
}
for (int j = i; j < charArray.length; j++) {
if (j - i > 2) {
String substr = password.substring(i, j);
String otherStr = password.substring(j, password.length());
checksubStrErr = otherStr.contains(substr);
}
if (checksubStrErr) {
break;
}
}
}
if ((checkNum < 3) || checksubStrErr) {
System.out.println("NG");
continue;
}
System.out.println("OK");
}
}
}