密码要求:
1.长度超过8位
2.包括大小写字母.数字,其
它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner ( System.in );
String s=null;
while (sc.hasNext ()) {
s = sc.nextLine ( );
if (s.length ( ) < 8 || s == null) {
System.out.println ( "NG" );
} else {
isTrue ( s );
}
}
}
public static void isTrue(String s){
if(isLengthTrue ( s )&&isContentQualified ( s )&&checkCharRepeat ( s )){
System.out.println ("OK" );
}
else{
System.out.println ("NG" );
}
}
// 1.判断长度
public static boolean isLengthTrue(String s){
return s.length ()>8;
}
//2.判断是否包含大小写,字母以及数字等
public static boolean isContentQualified(String s){
int Digit=0 , lowercase=0,uppercase=0,others=0;
char[] ch = s.toCharArray();
for (int i = 0; i < ch.length; i++) {
if (ch[i]>='0'&&ch[i]<='9') {
Digit=1;
continue;
}
else if (ch[i]>='a'&&ch[i]<='z') {
lowercase=1;
continue;
}
else if (ch[i]>='A'&&ch[i]<='Z') {
uppercase=1;
continue;
}else {
others=1;
continue;
}
}
int total = Digit+lowercase+uppercase+others;
return total>=3 ? true : false;
}
//3.不能有相同长度超过二的两个字串
public static boolean checkCharRepeat(String s){
for(int i=0 ;i<s.length()-2 ;i++){
String substr1 =s.substring(i, i+3);
if (s.substring(i+1).contains(substr1)) return false;
}
return true;
}
}