欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

密码验证合格程序

程序员文章站 2022-07-09 22:11:36
...

密码要求:

1.长度超过8位

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

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

说明:长度超过2的子串

输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
示例1
输入

021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
输出

OK
NG
NG
OK

import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;

/** 
* @author: "TonglingHu"
* @E-mail: [email protected]
* @date 创建时间:2017年8月19日 下午3:31:10 
* @version 1.0 
* @parameter  
* @since  
* @return  
*/
public class Main {
    static boolean isPasswLeagal(String string){
        if(string==null || string.length()<=8)
            return false;
        Set<Character> set=new LinkedHashSet<>();
        for(int i=0;i<string.length();i++){
            if(string.charAt(i)>='a' && string.charAt(i)<='z')
                set.add('a');
            else if(string.charAt(i)>='A' && string.charAt(i)<='Z')
                set.add('A');
            else if(string.charAt(i)>='0' && string.charAt(i)<='9')
                set.add('0');
            else
                set.add(' ');
        }
        if(set.size()<3)
        {
            set.clear();
            return false;
        }
        LinkedHashMap<String,Integer> map=new LinkedHashMap<>();
        for(int j=3;j<=string.length()/2;j++){
            for(int i=0;i<string.length()-j;i++){
                if(map.containsKey(string.substring(i,i+j)))
                    map.put(string.substring(i,i+j),map.get(string.substring(i,i+j))+1);
                else
                    map.put(string.substring(i,i+j),1);
            }
        }
        //System.out.println( map );
        for(String string2:map.keySet())
            if(map.get(string2)>=2){
                //System.out.println(string2);
                map.clear();
                return false;
            }
        map.clear();
        return true;
    }
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
        String string=in.next();
        if(isPasswLeagal(string))
            System.out.println("OK");
        else
            System.out.println("NG");
        }

    }

}
相关标签: 密码