密码验证合格程序

描述

密码要求:

 

 

 

1.长度超过8位

 

 

 

2.包括大小写字母.数字.其它符号,以上四种至少三种

 

 

 

3.不能有相同长度超2的子串重复

 

 

 

说明:长度超过2的子串

 

知识点 字符串,数组
运行时间限制 0M
内存限制 0
输入

一组或多组长度超过2的子符串。每组占一行

输出

如果符合要求输出:OK,否则输出NG

 

每行输出对应一组输入的结果;

 

样例输入 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000
样例输出 OK NG NG OK
 
package com.oj;

import java.util.Scanner;

public class TestOj {
	public static void test(String str){
		boolean flag = false;
		boolean[] flags = new boolean[4];
		boolean flag2 = false;
		boolean flag3 = false;
		//System.out.println(flags[0]);
		if(str.length()>8)
			flag = true;
		for(int i = 0;i < str.length(); i++){
			if(str.charAt(i)<='9'&&str.charAt(i)>='0')
				flags[0] = true;
			else if(str.charAt(i)>='a'&&str.charAt(i)<='z'){
				flags[1] = true;
			}else if(str.charAt(i)>='A'&&str.charAt(i)<='Z'){
				flags[2] = true;
			}else 
				flags[3] = true;
		}
		int count = 0;
		for(int i = 0;i < 4; i++){
			if(flags[i]==true)
				count++;
		}
		if(count>=3)
			flag2 = true;
		
		for(int length = 2;length < str.length(); length++){
			if(flag3==true)
				break;
			for(int i = 0;i < str.length()-length+1; i++){
				String tempbase = str.substring(i, i+length);
				//System.out.println(tempbase);
				StringBuilder copy = new StringBuilder(str.substring(0,i));
				copy.append(str.substring(i+length, str.length()));
				String use = copy.toString();
				if(use.contains(tempbase)){
					flag3 = true;
					break;
				}
					
			}
		}
		
		//System.out.println(flag+" "+flag2+" "+flag3);
		if(flag==true&&flag2==true&&flag3==false)
			System.out.println("OK");
		else
			System.out.println("NG");
	}
	
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String str = in.nextLine();
		while(str!=null){
			test(str);
			str = in.nextLine();
		}
		
	}
}

  

posted @ 2016-03-31 14:35  再见,少年  Views(152)  Comments(0Edit  收藏  举报