您的位置:首页 > 编程语言

华为在线编程系列-密码合格验证

2017-04-05 10:47 239 查看
题目:

密码要求:

1.长度超过8位

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

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

说明:长度超过2的子串

输入描述:

一组或多组长度超过2的子符串。每组占一行

输出描述

如果符合要求输出:OK,否则输出NG

例子:

输入:
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000

输出:
OK
NG
NG
OK


代码:对三种情况分别进行判断,其中对于第二个要求,可以用一个大小为4的数组来记录字符串的种类数

import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);

while(scan.hasNext()){
String value = scan.nextLine();
//第一个要求
if(value == null || value.length() <= 8){
System.out.println("NG");
}else{
int[] category = new int[4];
for(int i = 0; i < value.length(); i++){
if(value.charAt(i) <= 'Z' && value.charAt(i) >= 'A'){
category[0] = 1;
}else if(value.charAt(i) <= 'z' && value.charAt(i) >= 'a'){
category[1] = 1;
}else if(value.charAt(i) <= '9' && value.charAt(i) >= '0'){
category[2] = 1;
}else{
category[3] = 1;
}
}

if(category[0] + category[1] + category[2] + category[3] < 3){
System.out.println("NG");
}else{
System.out.println(isValidSubString(value));
}
}
}
}

private static String isValidSubString(String str){
for(int i = 3; i < str.length();i++){
String str1 = str.substring(i-3,i);
String str2 = str.substring(i,str.length());
if(str2.contains(str1)){
return "NG";
}
}
return "OK";
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: