济源建网站,简单网站搭建,设计欣赏,乐清市规划图高清题目和思路
题目背景
西西艾弗网对用户密码有一套安全级别评定标准。
题目描述
在西西艾弗网上#xff0c;用户的密码是一个由大写字母#xff08;A‐Z#xff09;、小写字母#xff08;a‐z#xff09;、数字#xff08;0‐9#xff09;和特殊字符#xff08;*和 …题目和思路
题目背景
西西艾弗网对用户密码有一套安全级别评定标准。
题目描述
在西西艾弗网上用户的密码是一个由大写字母A‐Z、小写字母a‐z、数字0‐9和特殊字符*和 #共 64 种字符组成的字符串。根据复杂程度不同密码安全度被分为高、中、低三档。
高由上述 64 种字符组成长度大于等于 6 个字符包含字母、数字和特殊字符同一个字符出现不超过 2 次中由上述 64 种字符组成长度大于等于 6 个字符包含字母、数字和特殊字符且未达到高安全度要求低由上述 64 种字符组成长度大于等于 6 个字符且未达到中安全度要求 小 P 为自己准备了 n n n 个候选密码试编写程序帮小 P 自动判别每个密码的安全级别。保证这 n n n 个密码都至少满足低安全度要求当安全度为高、中、低时分别输出 2、1、0 即可。
输入格式
从标准输入读入数据。 输入共 n 1 n 1 n1 行。 第一行包含一个正整数 n n n表示待判别的密码个数 接下来 n n n 行每行一个字符串表示一个安全度至少为低的候选密码。
输出格式
输出到标准输出。 输出共 n n n 行每行输出一个整数 2、1 或 0表示对应密码的安全度。
样例输入
4 csp#ccsp csp#ccsp2024 Csp#ccsp2024 CSP#2024
样例输出
0 1 2 2
样例解释
第一个密码不含数字安全度为低 第二个密码中小写字母 c 出现 3 次安全度为中 和第二个密码相比第三个密码把一个小写字母 c 变为了大写满足了高安全度要求 第四个密码同样满足高安全度要求。
子任务
全部的测试数据满足 n ≤ 100 n \le 100 n≤100且输入的每个字符串均不超过 20 个字符。
题解
只是基础题一个复杂度为 O ( n ) O(n) O(n)的算法即可满分通过。
AC代码
#include iostream
#include unordered_map
using namespace std;int main() {int n;cin n;while (n--) {string s;int level 0;bool hasDigit 0, hasTeshu 0, hasAlpha 0;bool isRepeated 0;unordered_mapchar,intmyset;cin s;for (const auto ch : s) {myset[ch];if (myset[ch] 2)isRepeated 1;if (isalpha(ch))hasAlpha 1;else if (isdigit(ch)) hasDigit 1;else hasTeshu 1;}if (hasAlpha hasDigit hasTeshu !isRepeated)cout 2 endl;else if (hasAlpha hasDigit hasTeshu)cout 1 endl;else cout 0 endl;}return 0;
}