作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

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

一、密码长度:

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_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

输入描述:

本题含有多组输入样例。
每组样例输入一个string的密码

输出描述:

每组样例输出密码等级

示例:

输入:

38$@NoNoNo
123

输出:

VERY_SECURE
WEAK

说明:

第一组样例密码强度为95分。
第二组样例密码强度为25分。

解题思路:

这题是字符串分析题。首先分析密码长度,进行加分;再遍历一遍,遍历过程中统计数字、大小写字母和符号的相关信息;按照标准进行加分;最后按照分数输出不同string结果,完成。

测试代码:

#include <iostream>
#include <string>using namespace std;string SecurityLevel(string password)
{int sum=0;int size=password.size();// 密码长度if(size<=4)sum+=5;else if(size>4&&size<=7)sum+=10;elsesum+=25;// 遍历bool noletter=true;bool haveupper=false;bool haveLower=false;bool havenumber=false;bool havesymbol=false;int numsize=0;int symbolsize=0;for(int i=0;i<size;++i){if(password[i]>='0'&&password[i]<='9'){numsize++;havenumber=true;}else if(password[i]>='a'&&password[i]<='z'){noletter=false;haveLower=true;}else if(password[i]>='A'&&password[i]<='Z'){noletter=false;haveupper=true;}else{symbolsize++;havesymbol=true;}}// 字母if(haveupper&&haveLower)sum+=20;else if((haveupper&&!haveLower)||(!haveupper&&haveLower))sum+=10;// 数字if(numsize>1)sum+=20;else if(numsize==1)sum+=10;// 数字if(symbolsize>1)sum+=25;else if(symbolsize==1)sum+=10;// 奖励if(haveupper&&haveLower&&havenumber&&havesymbol)sum+=5;else if(!noletter&&havenumber&&havesymbol)sum+=3;else if(!noletter&&havenumber)sum+=2;//结果if(sum>=90)return "VERY_SECURE";else if(sum>=80)return "SECURE";else if(sum>=70)return "VERY_STRONG";else if(sum>=60)return "STRONG";else if(sum>=50)return "AVERAGE";else if(sum>=25)return "WEAK";elsereturn "VERY_WEAK";
}int main()
{string password;while(getline(cin,password)){cout<<SecurityLevel(password)<<endl;}return 0;
}

华为机试HJ87:密码强度等级相关推荐

  1. 华为机试:密码强度等级、百钱买百鸡问题

    1.密码强度等级 题目描述 密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分. 一.密码长度: 5 分: 小于等于4 个字符 10 分: 5 到7 字符 25 分: 大于等于8 个字符 ...

  2. 华为机试:密码强度等级

    一.题目: 密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分. 一.密码长度: 5 分: 小于等于4 个字符.10 分: 5 到7 字符.25 分: 大于等于8 个字符 二.字母: 0  ...

  3. 华为机试——简单密码

    题目描述 密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了.哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全. 假设渊子原来一个BBS上的密码为zvbo9441987 ...

  4. Java算法:华为机试算法(下),华为算法Java版,牛客网华为算法73~108题

    接上篇:Java算法:华为机试算法(中),华为算法Java版,牛客网华为算法55~72题   HJ73 计算日期到天数转换 计算日期到天数转换 题目描述 根据输入的日期,计算是这一年的第几天.. 测试 ...

  5. 华为机试108题(C 语言解答)

    Nowcoder题库链接:华为机试 HJ1 字符串最后一个单词的长度(字符串) 输入:hello nowcoder输出:8说明: 最后一个单词为nowcoder,长度为8 示例代码: HJ1.c #i ...

  6. 【强烈推荐收藏】坚持3个月爆肝华为机试108题C++全解(适合新手入门,就业必刷套题)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 金九银十,金三银四.当前正处于校招.社招的火热期,之前就想为正在筹备就业的同学们准备刷题宝 ...

  7. 【华为机试】死记硬背没思路?一般人我劝你还是算了吧

    大家好,我是哪吒. 五月份之前,如果你参加华为OD机试,收到的应该是2022Q4或2023Q1,这两个都是A卷题. 5月10日之后,很多小伙伴收到的是B卷,那么恭喜你看到本文了,抓紧刷题吧.B卷新题库 ...

  8. 【华为机试真题Java】从入门到入职-真题列表导读

    写在前面 本专栏有100+道题(持续更新中),都是往期的HW机试真题,根据过往同学的经验基本都会考到原题.大家有什么不懂的都可以留言. 华为机试有三道题目,第一道和第二道属于简单或中等题,分值为100 ...

  9. 牛客在线编程-华为机试-中等

    牛客在线编程题目-华为机试-中等 题号 题目 知识点 难度 通过率 HJ16 购物单 动态规划 中等 21.21% HJ17 坐标移动 字符串 中等 24.79% HJ20 密码验证合格程序 数组 字 ...

最新文章

  1. PotPlayer 所有版本合集
  2. SQL SERVER中一些常见性能问题的总结
  3. cname 别名记录 解析过程_云解析是什么?需要购买吗?
  4. PHP(三)——PHP基础知识
  5. XML——XML概述
  6. 微信扫码登录注册实现
  7. Java会走向晦暗吗?Kotlin会取而代之吗
  8. SNIFFER(嗅探器)-简介(zt)
  9. C语言 写一个函数求两个数的较大值
  10. MD5校验文件完整性
  11. 微软确认:从4月13日起,Win10系统将强制卸载旧版Edge浏览器
  12. 重置帆软决策系统用户名密码
  13. PS存储为和导出为的区别
  14. 微信屏蔽网页的依据是什么?
  15. 从苏宁电器到卡巴斯基第34篇:我与卡巴斯基的邂逅(上)
  16. Python 超简单爬取微博热搜榜数据
  17. Flink的CheckPoint机制
  18. mysql集群 教程_mysql集群搭建教程-基础篇
  19. 基于DCGAN的动漫头像生成神经网络实现
  20. 打谱软件java版_finale打谱软件下载

热门文章

  1. 记一次小程序自定义导航栏及加载动画的解决方案
  2. [译] 轻松发布私有 App
  3. 深度解析 | K8S API Server之请求处理
  4. 【bootloader】bootloader启动过程分析
  5. FreeRTOS(五)——heap文件解析
  6. android 11 版本更新内容,android 11怎么更新 android 11更新方法
  7. py2exe支持python3.6_使用Py2Exe for Python3创建自己的exe程序示例
  8. 朗读评价语言集锦_运用朗读评价语
  9. php抓包分析工具下载,Wireshark(抓包分析工具) V3.2.1 32位多国语言安装版
  10. php做网页的流畅,Easying轻量流畅