题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
String s = in.next();
Set<String> commonSubstrings = new HashSet<>();
int CapLetters = 0, LowLetters = 0, numbers = 0, others = 0;
boolean hasDuplicates = false;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
// 检查大小写字母,数字和其它符号
if ('A' <= c && c <= 'Z') CapLetters = 1;
else if ('a' <= c && c <= 'z') LowLetters = 1;
else if ('0' <= c && c <= '9') numbers = 1;
else if (c != ' ' && c != '\n') others = 1;
// 检查当前string里是否有长度大于2的substring
if (i > 1) {
if (!commonSubstrings.add(s.substring(i - 2, i + 1))) {
hasDuplicates = true;
break;
}
}
}
// 密码要求:
// 1.长度超过8位
// 2.包括大小写字母.数字.其它符号,以上四种至少三种
// 3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)
if (s.length() < 9 || hasDuplicates || (CapLetters + LowLetters + numbers + others < 3))
System.out.println("NG");
else
System.out.println("OK");
}
}
}

查看9道真题和解析