题解 | #密码验证合格程序#

密码验证合格程序

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;
    }
}


全部评论

相关推荐

想润的芹菜人狠话不多:把其中一个老总放中间都会得罪另一个
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务