描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
知识点字符串,数组运行时间限制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; } }
