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

密码验证合格程序

http://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841

package cn.gywulian.by;

import java.util.*;

/**
 * @author lc
 * @version 1.0.0
 * @ClassName HW20.java
 * @Description 密码验证合格程序
 * @createTime 2022年01月18日 15:47:00
 */
public class HW20 {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        while (scanner.hasNextLine()) {

            String password = scanner.nextLine();

            char[] chars = password.toCharArray();

//            Pattern number = Pattern.compile("[0-9]");
//            Pattern minChar = Pattern.compile("[a-z]");
//            Pattern bigChar = Pattern.compile("[A-Z]");
//            Pattern oChar = Pattern.compile("[^a-zA-Z0-9]");

            if (password.length() > 8) {
                int a = 0, b = 0, e = 0, d = 0;
                boolean err = true;
                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;
                    } else if (c == ' ' || c == '\n') {
                        //存在空格或换行
                        err = false;
                        break;
                    } else {
                        e = 1;
                    }
                }
                if (err) {
                    if ((a + b + d + e) >= 3) {
                        if (reStr(password)) {
                            System.out.println("OK");
                        } else {
                            // 重复字符串
                            System.out.println("NG");
                        }
                    } else {
                        // 字符种类小于三种
                        System.out.println("NG");
                    }
                } else {
                    //存在空格
                    System.out.println("NG");
                }
            } else {
                // 长度小于等于8
                System.out.println("NG");
            }
        }
    }

    private static boolean reStr(String s) {
        for (int i = 3; i < s.length(); i++) {
            if (s.substring(i).contains(s.substring(i - 3, i))) {
                return false;
            }
        }

        return true;
    }
}


全部评论
妙啊,it works
2 回复 分享
发布于 2022-02-13 09:59
子串去你理解错了,例如ABABA,两个“ABA”
2 回复 分享
发布于 2023-09-12 12:12 安徽
有三个以上重复元素一定会导致有三个重复的元素,所以只要三个元素的没检测出来就是没有。
2 回复 分享
发布于 04-06 16:57 山东
没判断重复的情况
1 回复 分享
发布于 2022-03-01 20:45
精妙,我还在想正则怎么表达
点赞 回复 分享
发布于 2022-04-24 09:19
妙,清晰易懂
点赞 回复 分享
发布于 2022-05-13 17:25
s.length()-2 问下这个是为啥 要减去2?
点赞 回复 分享
发布于 2022-06-06 08:50
还是只能判断有3个重复的元素
点赞 回复 分享
发布于 2022-06-30 16:30
人才啊,你是怎么做到的?
点赞 回复 分享
发布于 2023-03-24 11:07 陕西
楼上有人说了ABABA问题了,输入1ABABAdnmj就知道这个程序有待完善
点赞 回复 分享
发布于 07-13 23:21 上海

相关推荐

一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
62 13 评论
分享
牛客网
牛客企业服务