题解 | #密码强度等级#

密码强度等级

https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361

就是一层一层判断,逻辑对了就行

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        int grade = 0;
        //密码长度
        if (s.length() <= 4) {
            grade = 5;
        } else if (s.length() <= 7) {
            grade = 10;
        } else {
            grade = 25;
        }

        //字母
        boolean flag1 = true;
        boolean flag2 = true;
        boolean flag3 = true;
        int len = 0;//表示数字的长度
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (ch >= 'a' && ch <= 'z') {
                flag1 = false;
                flag2 = false;//表示有小写
                continue;
            }
            if (ch >= 'A' && ch <= 'Z') {
                flag1 = false;
                flag3 = false;//表示有大写
            }
            if (ch >= '0' && ch <= '9') {
                len++;
            }
        }
        if (flag1) {
            grade = grade;
        } else if (flag2 == false && flag3 == true) {
            grade += 10;
        } else if (flag2 == true && flag3 == false) {
            grade += 10;
        } else if (flag2 == false && flag3 == false) {
            grade += 20;
        }

        //数字
        if (len == 1) {
            grade += 10;
        } else if (len > 1) {
            grade += 20;
        }

        //符号
        int count = 0;
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if ((ch >= '!' && ch <= '/') || (ch >= ':' && ch <= '@') || (ch >= '[' &&
                    ch <= '`') || (ch >= '{' && ch <= '~')) {
                count++;
            }
        }
        if (count == 1) {
            grade += 10;
        } else if (count > 1) {
            grade += 25;
        }
        if (count > 0 && len > 0 && !flag2 && !flag3) {
            grade += 5;
        } else if ((!flag2 && count > 0 && len > 0) || (!flag3 && count > 0 &&
                   len > 0)) {
            grade += 3;
        } else if (!flag1 && len > 0) {
            grade += 2;
        }
        if (grade >= 90) {
            System.out.println("VERY_SECURE");
        } else if (grade >= 80) {
            System.out.println("SECURE");
        } else if (grade >= 70) {
            System.out.println("VERY_STRONG");
        } else if (grade >= 60) {
            System.out.println("STRONG");
        } else if (grade >= 50) {
            System.out.println("AVERAGE");
        } else if (grade >= 25) {
            System.out.println("WEAK");
        } else if (grade >= 0) {
            System.out.println("VERY_WEAK");
        }
    }

}

全部评论

相关推荐

勇敢的联想人前程似锦:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务