题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
细测的话应该还有bug,但提交时系统的测试用例是可以全部通过的。
import java.util.Scanner;
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.nextLine();
if (s.length() < 8) {
System.out.println("NG");
} else {
String s1 = s.replaceAll("[A-Z]", "");
String s2 = s.replaceAll("[a-z]", "");
String s3 = s.replaceAll("[0-9]", "");
String s4 = s.replaceAll("[A-Za-z0-9 ]", "");
int An = s.length() - s1.length();//大写字母的数量
int an = s.length() - s2.length();//小写字母的数量
int n0 = s.length() - s3.length();//数字的数量
int othern = s4.length();//其他字符的数量
int[] nums = {An, an, n0, othern};
int numo = 0;
for (int i = 0; i < 4; i++) {
if (nums[i] == 0) numo += 1;//等于0代表密码中不含该种类型的字符
}
if (numo > 1) {
System.out.println("NG");
} else {
String out ="OK";
//判断是否有长度大于2的重复子串
for (int k = 0; k < s.length() / 3; k++) {
String ssk = s.substring(k, k + 3);
String sso = s.substring(k + 3);
if(sso.contains(ssk)){
out="NG";
break;
}
}
System.out.println(out);
}
}
}
}
}
查看8道真题和解析