密碼驗證合格程式
阿新 • • 發佈:2019-02-20
密碼要求:
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");
}
}
}