华为OD机试 2024E卷题库疯狂收录中,刷题 <a rel="nofollow" href="https://blog.csdn.net/qq_40374604/category_12822407.html" style="color: red;">点这里</a>。

实战项目访问:http://javapub.net.cn/

专栏导读

本专栏收录于 《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》

刷的越多,抽中的概率越大,私信javapub,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。


密码强度等级

密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。

一、密码长度

  • 5 分: 小于等于4 个字符
  • 10 分: 5 到7 字符
  • 25 分: 大于等于8 个字符

二、字母

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

三、数字

  • 0 分: 没有数字
  • 10 分: 1 个数字
  • 20 分: 大于1 个数字

四、符号

  • 0 分: 没有符号
  • 10 分: 1 个符号
  • 25 分: 大于1 个符号

五、奖励(只能选符合最多的那一种奖励)

  • 2 分: 字母和数字
  • 3 分: 字母、数字和符号
  • 5 分: 大小写字母、数字和符号

最后的评分标准

  • = 90: 非常安全

  • = 80: 安全(Secure)

  • = 70: 非常强

  • = 60: 强(Strong)

  • = 50: 一般(Average)

  • = 25: 弱(Weak)

  • = 0: 非常弱(Very_Weak)

对应输出为:

  • VERY_SECURE
  • SECURE
  • VERY_STRONG
  • STRONG
  • AVERAGE
  • WEAK
  • VERY_WEAK

请根据输入的密码字符串,进行安全评定。

  • 字母:a-z, A-Z
  • 数字:0-9
  • 符号包含如下:(ASCII码表可以在UltraEdit的菜单view->ASCII Table查看)
    • !"#$%&'()*+,-./ (ASCII码:0x21~0x2F)
    • :;<=>?@ (ASCII码:0x3A~0x40)
    • [\]^_` (ASCII码:0x5B~0x60)
    • {|}~ (ASCII码:0x7B~0x7E)

提示: 1 <= 字符串的长度<= 300


Java 编程

package cn.net.javapub.javaintroduction.example;

/**
 * @author: shiyuwang
 * @url: http://javapub.net.cn
 */

import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        while ((str = br.readLine()) != null) {
            int score = letter(str);
            if (score >= 90) {
                System.out.println("VERY_SECURE");
            } else if (90 > score && score >= 80) {
                System.out.println("SECURE");
            } else if (80 > score && score >= 70) {
                System.out.println("VERY_STRONG");
            } else if (70 > score && score >= 60) {
                System.out.println("STRONG");
            } else if (60 > score && score >= 50) {
                System.out.println("AVERAGE");
            } else if (50 > score && score >= 25) {
                System.out.println("WEAK");
            } else {
                System.out.println("VERY_WEAK");
            }
        }
    }

    public static int letter(String pwd) {
        char[] chars = pwd.toCharArray();
        int countUp = 0;
        int countLow = 0;
        int countNum = 0;
        int countSym = 0;
        int score1 = 0;
        int len = pwd.length();
        if (len <= 4) {
            score1 = 5;
        } else if (len > 4 && len < 8) {
            score1 = 10;
        } else {
            score1 = 25;
        }

        for (int i = 0; i < chars.length; i++) {
            if (chars[i] >= 'a' && chars[i] <= 'z') {
                countLow++;
            } else if (chars[i] >= 'A' && chars[i] <= 'Z') {
                countUp++;
            } else if (chars[i] >= '0' && chars[i] <= '9') {
                countNum++;
            } else {
                countSym++;
            }
        }
        if (countUp == chars.length || countLow == chars.length) {
            score1 += 10;
        } else if (countUp > 0 && countUp < chars.length && countLow > 0 && countLow < chars.length) {
            score1 += 20;
        }
        if (countNum == 1) {
            score1 += 10;
        } else if (countNum > 1) {
            score1 += 20;
        }
        if (countSym == 1) {
            score1 += 10;
        } else if (countSym > 1) {
            score1 += 25;
        }
        if (countSym != 0 && countNum != 0 && countLow != 0 && countUp != 0) {
            score1 += 5;
        } else if (countSym != 0 && countNum != 0 && (countLow != 0 || countUp != 0)) {
            score1 += 3;
        } else if (countSym == 0 && countNum != 0 && (countLow != 0 || countUp != 0)) {
            score1 += 2;
        }
        return score1;

    }
}

展示效果:

在这里插入图片描述

在这里插入图片描述

🏆下一篇: 华为OD机试 - 求最大连续bit数 (Java 2024 E卷 100分) 🏆本文收录于, 搬砖工逆袭Java架构师

刷的越多,抽中的概率越大,私信javapub,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

优质合集推荐

《突击面试》Java面试题合集
《面试1v1》
《编程工作总结》