题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
相关代码和解释如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String passWord = scanner.nextLine();
char[] chars = passWord.toCharArray();
boolean pass = true;
//使用a、b、d、e的值相加来确保完成密码要求2
int a = 0, b = 0, e = 0, d = 0;
for (char c : chars) {
if (c >= '0' && c <= '9') {
a = 1;
} else if (c >= 'a' && c <= 'z') {
b = 1;
} else if (c >= 'A' && c <= 'Z') {
d = 1;
//这个添加一个判断:不能为空格或者换行,
//如果有空格换行则直接false
} else if (c == ' ' || c == '\n') {
pass = false;
break;
} else {
e = 1;
}
}
//规则要求1、2、3的判断
if (passWord.length() <= 8 || (a + b + d + e) < 3 || !isOK(passWord)) {
pass = false;
}
if (pass) {
System.out.println("OK");
} else {
System.out.println("NG");
}
}
}
//规则3,通过提取前面的
public static boolean isOK(String s) {
for (int i = 3; i < s.length(); i++) {
//这里需要注意的是,substring(a,b)函数中是不包括右边的b的,也就是说右边是开区间。
//而substring(a)指的是包括a在内的后面的整个字符串,不能有长度大于2则表示当长度大于等于3不符合标准
if (s.substring(i).contains(s.substring(i - 3, i))) {
return false;
}
}
return true;
}
}


查看6道真题和解析