描述 |
|
---|---|
知识点 | 字符串,数组 |
运行时间限制 | 0M |
内存限制 | 0 |
输入 | 一组或多组长度超过2的子符串。每组占一行 |
输出 | 如果符合要求输出:OK,否则输出NG
每行输出对应一组输入的结果;
|
样例输入 | 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000 |
样例输出 | OK NG NG OK |
侧重点:字符串最长重复子串判断
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.nextLine();
///String[] arrs=s.split(" ");
//for(int i=0;i<arrs.length;i++){
System.out.println(pass(s));
//}
}//sc.close();
}
private static String pass(String s){
//if(sign(s)){return "11";}return "10";
//if(subs(s)){return"21";}return"20";
if(sign(s)&&subs(s)){
return "OK";
}else{
return "NG";
}
}
private static boolean sign(String s){
int i=0;int j=0;int k=0;int z=0;
for(int a=0;a<s.length();a++){
if(s.charAt(a)>='0'&&s.charAt(a)<='9'){i=1;}
else if(s.charAt(a)>='a'&&s.charAt(a)<='z'){j=1;}else if(s.charAt(a)>='A'&&s.charAt(a)<='Z'){k=1;}
else{z=1;}
}
if(i+j+k+z>=3){return true;}
return false;
}
private static boolean subs(String s){
int a=0;int b=2;int k=0;int sum=0;
for(int i=a;i<s.length()-5;i++){
for(int j=b;j<s.length();j++){
if(s.charAt(i)==s.charAt(j)){
a=i+1;++k;
if(j==s.length()-1){b=i+2;}else{b=j+1;}
//j=j+1;
sum=sum>k?sum:k;break;
}else{k=0;b=i+2;}
}
}
if(sum>2){return false;}
return true;
}
}