题解 | #密码验证合格程序#
密码验证合格程序
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; } }