测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A21139. 密码强度

填空题 中等

题目描述

密码强度

题目描述

⼩杨是学校⽹络安全⼩组的成员,今天他的任务是设计⼀个“密码强度检测器”,帮助同学们检查⾃⼰的密码是否⾜ 够安全。⼀个安全的密码需要满⾜以下条件:

  • 密码⾄少包含8个字符(太短的密码容易被猜出来哦!)。
  • 密码⾄少包含⼀个⼤写字母(A、B、C、...、Z 都可以)。
  • 密码⾄少包含⼀个数字(0、1、2、3、...、9 都可以)。

例如:

  • 密码PAs1s2an是安全密码(有8位、包含大写字母P、A和数字1、2)。
  • 密码 ab1da3cd不是安全密码(没有大写字母)。
  • 密码Paabdbcd不是安全密码(没有数字)。
  • 密码Pa2不是安全密码(只有3位,太短了)。

输入格式

第⼀⾏⼀个正整数 T ,代表1需要安全检测的密码组数。

对于每组密码,⼀⾏包含⼀个字符串,代表需要安全检测的密码。

输出格式

对于每组密码,输出⼀⾏,如果满⾜强度要求输出 Y,否则输出 N。

样例

输入样例

6
PAs1s2an
1a2bCql3
Pa12bsna
ab1da3cd
Paabdbcd
Pa2

输出样例

Y
Y
Y
N
N
N

样例解释

  • 密码PAs1s2an是安全密码(有8位、包含大写字母P、A和数字1、2)。
  • 密码1a2bCql3是安全密码(有8位、包含大写字母C和数字1、2、3)。
  • 密码Pa12bsna是安全密码(有8位、包含大写字母P和数字1、2)。
  • 密码ab1da3cd不是安全密码(没有大写字母)。
  • 密码 Paabdbcd不是安全密码(没有数字)。
  • 密码Pa2不是安全密码(只有3位,太短了)。

数据范围

对于所有测试点,保证1≤T≤100,并且每组密码长度不超过100且至少为1,每组密码仅由大小写字母和数字组成。

参考答案

#include <iostream> #include <string> using namespace std; int main() { int T; cin >> T; while (T--) { string password; cin >> password; bool has_upper = false; bool has_digit = false; for (size_t i = 0; i < password.length(); ++i) { if (isupper(password[i])) { has_upper = true; } if (isdigit(password[i])) { has_digit = true; } } if (password.length() >= 8 && has_upper && has_digit) { cout << "Y\n"; } else { cout << "N\n"; } } return 0; }
上一题 下一题