B3843 [GESP202306 三级] 密码合规
只能由 a∼z 之间 26 个小写字母、A∼Z 之间 26 个大写字母、0∼9 之间 10 个数字以及。输入一行不含空格的字符串。该字符串被英文逗号分隔为多段,作为多组被检测密码。网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。输出若干行,每行输出一组合规的密码。输出顺序以输入先后为序,即先输入则先输出。大写字母,小写字母和数字必须至少有其中两种,以及至少有四个特殊字符中的一个。密
·
题目描述
网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。合规的密码应满足以下要求 :
-
只能由 a∼z 之间 26 个小写字母、A∼Z 之间 26 个大写字母、0∼9 之间 10 个数字以及
!@#$四个特殊字符构成。 -
密码最短长度 :6 个字符,密码最大长度 :12 个字符。
-
大写字母,小写字母和数字必须至少有其中两种,以及至少有四个特殊字符中的一个。
输入格式
输入一行不含空格的字符串。约定长度不超过 100。该字符串被英文逗号分隔为多段,作为多组被检测密码。
输出格式
输出若干行,每行输出一组合规的密码。输出顺序以输入先后为序,即先输入则先输出。
输入输出样例
输入 #1复制
seHJ12!@,sjdkffH$123,sdf!@&12HDHa!,123&^YUhg@!
输出 #1复制
seHJ12!@ sjdkffH$123
说明/提示
【样例 1 解释】
输入被英文逗号分为了四组被检测密码:seHJ12!@、sjdkffH$123、sdf!@&12HDHa!、123&^YUhg@!。其中 sdf!@&12HDHa! 长度超过 12 个字符,不合规;123&^YUhg@! 包含四个特殊字符之外的字符不合规。
思路:
可以写一个函数判断:
1. 先判断长度
int len = s.size();
if(len < 6 || len > 12){
return false;
}
2.再根据条件判断
bool upp = false, low = false, num = false, spc = false;
for(int i = 0;i < len;i++){
if(s[i] >= 'a' && s[i] <= 'z') low = true;
else if(s[i] >= 'A' && s[i] <= 'Z') upp = true;
else if(s[i] >= '0' && s[i] <= '9') num = true;
else if(s[i] == '!' || s[i] == '@' || s[i] == '#' || s[i] == '$') spc = true;
else return false;
}
if((upp == true && low == true && spc == true) || (low == true && num == true && spc == true) || (upp == true && num == true && spc == true)){
return true;
}
上代码:
#include<bits/stdc++.h>
using namespace std;
bool check(string s){
int len = s.size();
if(len < 6 || len > 12){
return false;
}
bool upp = false, low = false, num = false, spc = false;
for(int i = 0;i < len;i++){
if(s[i] >= 'a' && s[i] <= 'z') low = true;
else if(s[i] >= 'A' && s[i] <= 'Z') upp = true;
else if(s[i] >= '0' && s[i] <= '9') num = true;
else if(s[i] == '!' || s[i] == '@' || s[i] == '#' || s[i] == '$') spc = true;
else return false;
}
if((upp == true && low == true && spc == true) || (low == true && num == true && spc == true) || (upp == true && num == true && spc == true)){
return true;
}
return false;
}
string s;
int main(){
cin >> s;
s += ',';
string pwd = "";
for(int i = 0;i < s.size();i++){
if(s[i] != ','){
pwd += s[i];
}else{
if(check(pwd)){
cout << pwd << "\n";
}
pwd = "";
}
}
return 0;
}
禁止复制刷AC!!!
更多推荐



所有评论(0)