每日OJ题_牛客HJ87 密码强度等级(IO型OJ)

目录

牛客HJ87 密码强度等级

解析代码


牛客HJ87 密码强度等级

密码强度等级_牛客题霸_牛客网

题目描述

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

一、密码长度:
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

输入描述:

输入一个string的密码

输出描述:

输出密码等级


解析代码

#include <cctype>
#include <iostream>
#include <string>
using namespace std;
int level(string str)
{int ret = 0;int n = str.size(); // 长度if (n <= 4)ret += 5;else if (n >= 5 && n <= 7)ret += 10;elseret += 25;//cout << "长度" << n << "分数" << ret << endl;int low = 0, gre = 0, cnt0 = 0; // 0字母for (auto& e : str) {if (islower(e))++low;else if (isupper(e))++gre;cnt0 = low + gre;}if (low && gre == 0)ret += 10;else if (gre && low == 0)ret += 10;else if (gre && low)ret += 20;int cnt1 = 0; // 1数字for (auto& e : str) {if (isdigit(e))++cnt1;}if (cnt1 == 1)ret += 10;else if (cnt1 > 1)ret += 20;int cnt2 = 0; // 2符号for (auto& e : str){if (e >= 0x21 && e <= 0x2F|| e >= 0x3A && e <= 0x40|| e >= 0x5B && e <= 0x60|| e >= 0x7B && e <= 0x7E)++cnt2;}if (cnt2 == 1)ret += 10;else if (cnt2 > 1)ret += 25;if (low && gre && cnt1 && cnt2) // 加分ret += 5;else if (cnt0 && cnt1 && cnt2)ret += 3;else if (cnt0 && cnt1)ret += 2;return ret;
}int main()
{string str;cin >> str;int res = level(str);//cout << res;if (res >= 90)cout << "VERY_SECURE";else if (res >= 80)cout << "SECURE";else if (res >= 70)cout << "VERY_STRONG";else if (res >= 60)cout << "STRONG";else if (res >= 50)cout << "AVERAGE";else if (res >= 25)cout << "WEAK";elsecout << "VERY_WEAK";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/728917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式-状态模式使用方法

状态模式&#xff08;State Pattern&#xff09;是一种行为设计模式&#xff0c;它允许一个对象在其内部状态改变时改变它的行为&#xff0c;看起来就好像改变了它的类一样。状态模式主要用于实现一个对象的状态转换逻辑分离&#xff0c;以及避免使用大量的条件判断语句。 状态…

C# LINQ基础

LINQ基础 1. 入门2. 运算符流语法2.1 连续使用查询运算符2.2 使用Lambda表达式2.2.1 Lambda表达式及Func的方法签名2.2.2 Lambda表达式和元素类型2.2.3 自然排序2.2.4 其他查询运算符 3 查询表达式4 延迟执行4.1 重复执行4.2 捕获的变量4.3 延迟加载的工作原理4.4 查询语句的执…

【思考】crud接口命名规范

写代码时取名字真的是痛苦。 方法命名 1、阿里命名规范 Service/Dao 层命名规约 1&#xff09; 获取单个对象的方法用 get 做前缀。 2&#xff09; 获取多个对象的方法用 list 做前缀。 3&#xff09; 获取统计值的方法用 count 做前缀。 4&#xff09; 插入的方法用 save&am…

c++ 11 新特性 不同数据类型之间转换函数之const_cast

一.不同数据类型之间转换函数const_cast介绍 const_cast是C11中引入的一种类型转换操作符&#xff0c;用于修改类型的const或volatile属性。const_cast的主要用途是移除对象的常量性&#xff0c;它是唯一具有此能力的C风格的转型操作符。在C11中&#xff0c;const_cast可以完成…

李子柒的精致生活只是一种文人想象

社会运行有两种基本的赚钱方式&#xff1a;1.做出有意义的社会贡献&#xff0c;获得与贡献的社会价值相称的报酬。劳动时间与劳动价值同酬。2.利用市场的无效率&#xff0c;在不产生任何实质价值的情况下摘取资金。劳动时间与劳动价值不同酬。 找一份工作、从事有用的工作、编…

【经验】测试工装排错小结

最近在整产品测试工装&#xff0c;看起来很简单的几项检测功能&#xff0c;前后也就几百行代码&#xff0c;但是却花了两周时间将功能调试出来&#xff0c;过程可谓一波三折&#xff0c;现总结如下。 1&#xff1a;对于电源控制类的检测&#xff0c;最好考虑下电平稳定时间。 …

SpringMVC拦截器和过滤器执行顺序及区别

拦截器&#xff08;Inteceptor&#xff09;和过滤器&#xff08;Filter&#xff09;执行顺序&#xff1f; 拦截器和过滤器区别&#xff1f; 1、拦截次数不同&#xff1a; 过滤器&#xff1a;一次请求只能被一个过滤器拦截一次&#xff0c;它们按照在web.xml中的声明顺序依次执…

RBAC详细解释

关于RBAC **RBAC** **R**ole **B**ased **A**ccess **C**ontrol&#xff08;基于角色的访问控制&#xff09; RBAC是经典的用户权限管理的设计思路。在这样的设计中&#xff0c;会存在3种类型&#xff1a;用户、角色、权限&#xff0c;权限将分配到各种角色上&#xff0c;用户…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑净负荷均衡的分布式光伏集群电压调控策略研究》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

遗传算法理解与代码实战(二)- demo(python+deap)

前文介绍了遗传算法&#xff0c;并且手动python代码进行了实践&#xff0c;但是在遇到复杂的问题时&#xff08;遗传算法理解与代码实战&#xff08;三&#xff09;会介绍&#xff09;&#xff0c;手写代码很麻烦&#xff0c;所以需要借助专门的遗传算法库来实现&#xff0c;这…

使用IAD电话交换机(语音网关)将电话外线对接到FreeSWITCH SIP服务器

在我们初步了解了FreeSWITCH这样的SIP服务器之后&#xff0c;常见的一个需求就是把真实的电信世界&#xff08;比如固话、手机&#xff09;对接到SIP服务器里。 今天我们就介绍一个简单的方法&#xff0c;在3分钟内就把电信局和你的SIP软交换机融合通信起来。 IAD和SIP服务器环…

Superset二次开发之Superset架构理解

技术框架 框架作用 前端 React构建用户界面的 JavaScript 库ReduxJavaScript 应用的状态管理库,管理组件间的状态共享Webpack前端资源打包工具BabelJavaScript 编译器D3.js数据可视化的 JavaScript 库后端 Flask轻量级的 Python web 框架,处理 HTTP 请求、路由以及其他 Web 服…

搜维尔科技:动作捕捉与数字时尚:Wondar Studios欧莱雅项目

来自意大利的Wondar Studios工作室&#xff0c;是一家制作与动作捕捉技术相关软件和内容的公司&#xff0c;其出品的三维角色动画均由专业动捕系统真实录制制作。 我们很高兴与大家分享Wondar Studios最新的动捕项目&#xff0c;该项目带来了身临其境的虚拟现实体验。他们与巴…

AI新工具 MacOS 翻译提供翻译、润色和语法修改功能的插件;AI生成 Excel公式;Deepmind前华人员工创建视频生成工具

1: OpenAI Translator Bob Plugin macOS 平台的翻译提供翻译、润色和语法修改功能的插件 OpenAI Translator Bob Plugin是一款基于OpenAI的API&#xff0c;为用户提供翻译、润色和语法修改功能的插件。这款插件专门为macOS平台上的Bob软件设计&#xff0c;通过使用先进的Chat…

fork属性的作用

在Maven中&#xff0c;fork属性是maven-compiler-plugin插件的一个配置选项。它的作用是控制是否为编译过程启动一个新的进程。当fork设置为true时&#xff0c;Maven将启动一个新的进程来执行编译&#xff0c;这允许你在本地的Java编译器之外使用其他Java编译器&#xff0c;例如…

矩阵键盘中为什么有键位并联二极管?

矩阵键盘上使用二极管主要是为了解决“幽灵键”&#xff08;Ghosting&#xff09;和“键盘冲突”&#xff08;Key Jamming&#xff09;问题&#xff0c;这两种现象在没有采取适当措施的矩阵键盘中很常见。 幽灵键现象 当用户在矩阵键盘上同时按下多个键时&#xff0c;由于电流…

笔试刷题记录(二)

数值操作类型转换 class CompareReference{public static void main(String [] args){float f42.0f;float f1[]new float[2];float f2[]new float[2];float[] f3f1;long x42;f1[0]42.0f;} }A f1f2 B xf1[0] C f1f3 D f2f1[1]BC正确&#xff0c;选项B解释&#xff0c;java核…

如何定义resultType和resultMap,它们之间的区别是什么?解释一下<parameterType>的作用和用法。

在MyBatis中&#xff0c;resultType和resultMap都用于将数据库查询结果映射到Java对象&#xff0c;但它们在使用方式和灵活性上有一些区别。 resultType resultType是一个简单的类型别名&#xff0c;它用于指定查询结果应该映射到的Java类型。当数据库表中的列名和Java对象的属…

设计模式-建造者模式实践案例

建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式。当一个对象需要多个部分或许多步骤来创建&#xff0c;并且需要将创建过程与表示分离时&#xff0c;建造者模式非常有用。建造者模式旨在找到一个解决方案&…

C#使用泛型自定义的方法设计队列CQueue<T>类

目录 一、涉及到的知识点 1.C#中的队列类 2.自定义队列的方法 &#xff08;1&#xff09;先设计一个CList<T>类 &#xff08;2&#xff09;再设计CQueue<T>类 二、自定义队列CQueue<T>类的实例 一、涉及到的知识点 1.C#中的队列类 在C#中实现队列类&a…