主要是要理解条件三的含义,不具有公共元素,且长度大于2,利用HashMap解决重复问题。

public class Main{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		String str;
		Map<String,Integer> map;
		while(sc.hasNext()){
			str = sc.nextLine();
			if(str.length()<=8){
				System.out.println("NG");
				continue;
			}
			char ch;
			int count1=0;
			int count2=0;
			int count3=0;
			int count4=0;
			for(int i=0;i<str.length();i++){
				if(count1+count2+count3+count4>=3){
					break;
				}
				ch = str.charAt(i);
				if(ch>='a' && ch<='z'){
					count1=1;
				}
				else if(ch>='A' && ch<='Z'){
					count2=1;
				}
				else if(ch>='0' && ch<='9'){
					count3=1;
				}
				else{
					count4=1;
				}
			}
			if(count1+count2+count3+count4<3){
				System.out.println("NG");
				continue;
			}
			map = new HashMap<>();
			int flag = 0;
			for(int i=0;i<str.length()-3;i++){
				String str1 = str.substring(i,i+3);
				if(!map.containsKey(str1)){
					map.put(str1,i);
				}
				else{
					if(i-map.get(str1)>=3){
						System.out.println("NG");
						flag=1;
						break;
					}
				}
			}
			if(flag==0){
				System.out.println("OK");
			}
		}
	}
}