1. 程式人生 > >密碼驗證合格程式

密碼驗證合格程式

密碼要求:

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"); } } }