您的位置:首页 > 其它

OJ-----密码验证合格程序

2016-08-16 14:16 225 查看
描述
密码要求:   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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: