题解 | HJ87#密码强度等级#

密码强度等级

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

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    //    HJ87
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        char[] chars = str.toCharArray();

        //长度评分
//    一、密码长度:
//    5 分: 小于等于4 个字符
//    10 分: 5 到7 字符
//    25 分: 大于等于8 个字符
        int lengthMark;
        if (chars.length <= 4) {
            lengthMark = 5;
        } else if (chars.length <= 7) {
            lengthMark = 10;
        } else {
            lengthMark = 25;
        }

//    二、字母:
//    0 分: 没有字母
//    10 分: 密码里的字母全都是小(大)写字母
//    20 分: 密码里的字母符合”大小写混合“

        int lowerNum = 0;
        int upperNum = 0;
        for (int i = 0; i < chars.length; i++) {
            if (65 <= chars[i] && chars[i] <= 90) {
                upperNum++;
            } else if (97 <= chars[i] && chars[i] <= 122) {
                lowerNum++;
            }
        }
        //判断字母评分
        int CharacterMark;
        int CharaSum = lowerNum + upperNum;
        if (CharaSum == 0) {
            CharacterMark = 0;
        } else if (CharaSum == lowerNum || CharaSum == upperNum) {
            CharacterMark = 10;
        } else {
            CharacterMark = 20;
        }
        //三、数字:
//    0 分: 没有数字
//    10 分: 1 个数字
//    20 分: 大于1 个数字
        int Num = 0;
        for (int i = 0; i < chars.length; i++) {
            if (48 <= chars[i] && chars[i] <= 57) {
                Num++;
            }
        }
        //数字评分
        int NumberMark;
        if (Num == 0) {
            NumberMark = 0;
        } else if (Num == 1) {
            NumberMark = 10;
        } else {
            NumberMark = 20;
        }

//    四、符号:
//    0 分: 没有符号
//    10 分: 1 个符号
//    25 分: 大于1 个符号
        int SignalNum = 0;
        for (int i = 0; i < chars.length; i++) {
            if (122 < chars[i] || chars[i] < 48 || (58 <= chars[i] && chars[i] <= 64)) {
                SignalNum++;
            }
        }
        //符号评分
        int SignalMark;
        if (SignalNum == 0) {
            SignalMark = 0;
        } else if (SignalNum == 1) {
            SignalMark = 10;
        } else {
            SignalMark = 25;
        }

//    五、奖励(只能选符合最多的那一种奖励):
//    2 分: 字母和数字
//    3 分: 字母、数字和符号
//    5 分: 大小写字母、数字和符号
        int awardMark = 0;
        if (lowerNum > 0 && upperNum > 0 && Num > 0 && SignalNum > 0) {
            awardMark = 5;
        } else if ((lowerNum > 0 && upperNum == 0 && Num > 0 && SignalNum > 0) ||
                   (upperNum > 0 && lowerNum == 0 && Num > 0 && SignalNum > 0)) {
            awardMark = 3;
        } else if (SignalNum == 0 && Num > 0 && CharaSum > 0) {
            awardMark = 2;
        }

        //总分
        int sum = lengthMark + NumberMark + CharacterMark + SignalMark + awardMark;
        if (sum >= 90) {
            //    >= 90: 非常安全
            System.out.println("VERY_SECURE");
        } else if (sum >= 80) {
            // >= 80: 安全(SECURE)
            System.out.println("SECURE");
        } else if (sum >= 70) {
            // >= 70: 非常强( VERY_STRONG)
            System.out.println("VERY_STRONG");
        } else if (sum >= 60) {
            // >= 60: 强(STRONG)
            System.out.println("STRONG");
        } else if (sum >= 50) {
            //>= 50: 一般(AVERAGE)
            System.out.println("AVERAGE");
        } else if (sum >= 25) {
            //>= 25: 弱(WEAK)
            System.out.println("WEAK");
        } else {
            //>= 0:  非常弱(VERY_WEAK)
            System.out.println("VERY_WEAK");
        }

    }
}

没什么难度 这个通过率不应该

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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