密码验证合格程序
程序员文章站
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");
}
}
}
上一篇: 从凸面到凹面再到头戴 看显示器的发展历程
下一篇: Java后端笔记6