java解法
1)先判断字符串长度是否大于8(首要条件);
2)在判断是否包含三种类型的字符,若满足则继续判断是否有重复子字符串,否则标志位全置false,输出“NG”。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String s = sc.next();
boolean flag = true;
boolean flag1 = s.length()>8 ? true : false; //字符串长度要大于8
if(judge(s)){ //如果judge判断到满足“三种类型字符以上”条件,则判断是否存在重复子字符串
for(int i=0; i<s.length()-4; i++){
String substr = s.substring(i,i+3);
if(s.substring(i+1).contains(substr)) flag = false; //如果存在重复子字符串则标志flag=false
}
}else{ //如果judge判断到不满足“三种类型字符以上”条件,则所以标志置为false
flag = false;
flag1 = false;
}
if(flag && flag1) System.out.println("OK");
else System.out.println("NG");
}
}
public static boolean judge(String s){
boolean flag1 = false, flag2 = false, flag3 = false, flag4 = false;
for(char c : s.toCharArray()){
if(c>='a'&& c<='z') flag1 = true;
else if(c>='A'&& c<='Z') flag2 =true;
else if(c>='0'&& c<='9') flag3 = true;
else flag4 = true;
}
//满足有其中三种类型的字符则返回true
if((flag1 && flag2 && flag3)||(flag1 && flag2 && flag4)||(flag1 && flag3 && flag4)||(flag2 && flag3 &&flag4)){
return true;
}
else return false;
}
} 


京公网安备 11010502036488号