您的位置:首页 > 其它

密码验证合格程序

2017-01-03 00:00 141 查看

题目描述

密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串


输入描述

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


输出描述

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


输入例子

021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000


输出例子

OK
NG
NG
OK


算法实现

import java.util.Scanner;

/**
*
* All Rights Reserved !!!
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//        Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt"));
StringBuilder builder = new StringBuilder();
while (scanner.hasNext()) {
String input = scanner.nextLine();
System.out.println(passwordValidate(input));
}
scanner.close();

}

private static String passwordValidate(String input) {
final String OK = "OK";
final String NG = "NG";

// 长度超过8
if (input == null || input.length() < 9) {
return NG;
}

int[] kind = new int[4];

// 统计
for (int i = 0; i < input.length(); i++) {
char ch = input.charAt(i);
if (ch >= 'A' && ch <= 'Z') {
kind[0] |= 1;
} else if (ch >= 'a' && ch <= 'z') {
kind[1] |= 1;
} else if (ch >= '0' && ch <= '9') {
kind[2] |= 1;
} else {
kind[3] |= 1;
}
}

// 小于三种
if ((kind[0] + kind[1] + kind[2] + kind[3]) < 3) {
return NG;
}

for (int i = 0; i < input.length() - 3; i++) {
String s1 = input.substring(i, i + 3);
String s2 = input.substring(i + 3, input.length());
if (s2.contains(s1)) {
return NG;
}
}
return OK;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: