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;
}
上一题
下一题