描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)
数据范围:输入的字符串长度满足 1≤n≤100
输入描述:
一组字符串。
输出描述:
如果符合要求输出:OK,否则输出NG
示例1
输入:
021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000
复制输出:
OK NG NG OK
以下是一个使用Java编写的示例代码,用于检查输入的字符串是否满足密码要求:
import java.util.HashSet;
import java.util.Set;
public class PasswordChecker {
public static void main(String[] args) {
String[] inputStrings = {
"021Abc9000",
"021Abc9Abc1",
"021ABC9000",
"021$bc9000"
};
for (String input : inputStrings) {
System.out.println(checkPassword(input) ? "OK" : "NG");
}
}
public static boolean checkPassword(String password) {
if (password.length() <= 8) {
return false;
}
int numCount = 0;
int upperCount = 0;
int lowerCount = 0;
int symbolCount = 0;
Set<String> substrings = new HashSet<>();
for (int i = 0; i< password.length(); i++) {
char c = password.charAt(i);
if (Character.isDigit(c)) {
numCount++;
} else if (Character.isUpperCase(c)) {
upperCount++;
} else if (Character.isLowerCase(c)) {
lowerCount++;
} else {
symbolCount++;
}
if (i >= 2) {
String substring = password.substring(i - 2, i + 1);
if (substrings.contains(substring)) {
return false;
}
substrings.add(substring);
}
}
return numCount >= 1 && upperCount >= 1 && lowerCount >= 1 && symbolCount >= 1;
}
}
这个程序首先定义了一个名为checkPassword
的静态方法,该方法接受一个字符串作为输入,并返回一个布尔值,表示该字符串是否满足密码要求。然后,我们在main
方法中遍历输入字符串数组,并调用checkPassword
方法检查每个字符串是否满足要求。如果满足要求,则输出"OK",否则输出"NG"。
这个程序可以处理给定的示例输入,并产生正确的输出。