一、题目
描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有长度大于2的不含公共元素的子串重复 (注:其他符号不含空格或换行)
本题有多组输入
输入描述:
一组或多组字符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
二、代码
import java.util.Scanner;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] arg){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str = sc.next();
if(str.length() <= 8){
System.out.println("NG");
continue;
}
if(getMatch(str)){
System.out.println("NG");
continue;
}
if(getString(str, 0, 3)){
System.out.println("NG");
continue;
}
System.out.println("OK");
}
}
// 校验是否有重复子串
public boolean hasDuplicatedString(String s){
for(int i=0;i<s.length()-3;i++){
if(s.substring(i+3).contains(s.substring(i,i+3)))
return true;
}
return false;
}
// 检查是否满足正则
public boolean isContentQualified(String s){
int count=0;
String[] str={"[a-z]","[A-Z]","[0-9]","[^a-zA-Z0-9]"};
for(int i=0;i<str.length;i++){
Pattern p=Pattern.compile(str[i]);
Matcher m=p.matcher(s);
if(m.find())
count++;
}
return count>=3;
}
}