题解 | #密码强度等级#

密码强度等级

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

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input = in.next();
        int score = check(input);
        evaluate(score);
    }

    private static void evaluate(int score) {
        //评价
        if (score >= 90) {
            System.out.println("VERY_SECURE");
        } else if (score >= 80) {
            System.out.println("SECURE");
        } else if (score >= 70) {
            System.out.println("VERY_STRONG");
        } else if (score >= 60) {
            System.out.println("STRONG");
        } else if (score >= 50) {
            System.out.println("AVERAGE");
        } else if (score >= 25) {
            System.out.println("WEAK");
        } else if (score >= 0) {
            System.out.println("VERY_WEAK");
        }
    }

    private static int check(String input) {
        int letterUpper = 0;//记录大写字母数
        int letterLower = 0;//记录小写字母数
        int number = 0;//记录数字数
        int symbol = 0;//记录符号数
        int score = 0;//记录总分
        int length = input.length();
        if (length <= 4) {
            score += 5;
        } else if (length >= 5 && length <= 7) {
            score += 10;
        } else {
            score += 25;
        }
        for (int i = 0; i < length; i++) {
            char c = input.charAt(i);
            if (c >= '0' && c <= '9') {
                number++;
            } else if (c >= 'A' && c <= 'Z') {
                letterUpper++;
            } else if (c >= 'a' && c <= 'z') {
                letterLower++;
            } else {
                symbol++;
            }
        }
        if ((letterUpper == 0 && letterLower > 0) || (letterUpper > 0 &&
                letterLower == 0)) {
            score += 10;
        } else if (letterUpper > 0 && letterLower > 0) {
            score += 20;
        }
        if (number == 1) {
            score += 10;
        } else if (number > 1) {
            score += 20;
        }
        if (symbol == 1) {
            score += 10;
        } else if (symbol > 1) {
            score += 25;
        }
        if (letterUpper > 0 && letterLower > 0 && number > 0 && symbol > 0) {
            score += 5;
        } else if (number > 0 && symbol > 0 && (letterUpper > 0 || letterLower > 0)) {
            score += 3;
        } else if (number > 0 && (letterUpper > 0 || letterLower > 0)) {
            score += 2;
        }
        return score;
    }
}

解题思路:

1, 首先根据判断条件, 计算得出当前分数;

2, 根据分数结果, 进行评价输出密码等级

全部评论

相关推荐

02-10 13:41
西南大学 Java
牛客12789347...:你们这28届的干啥呀,大学玩舒服了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务