题目描述
网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。合规的密码应满足以下要求:
1、只能由a-z之间26个小写字母、A-Z之间26个大写字母、0-9之间10个数字以及!@#$四个特殊字符构成。
2、密码最短长度:6个字符,密码最大长度:12个字符。
3、大写字母、小写字母和数字必须至少有其中两种,以及至少有四个特殊字符中的一个。
输入格式
输入一行不含空格的字符串。约定长度不超过100。该字符串被英文逗号分隔为多段,作为多组被检测密码。
输出格式
输出若干行,每行输出一组合规的密码。
输出顺序以输入先后为序,即先输入则先输出。
样例输入content_copy
seHJ12!@,sjdkffH$123,sdf!@&12HDHa!,123&^YUhg@!
样例输出content_copy
seHJ12!@
sjdkffH$123
提示/说明
输入被英文逗号分为了四组被检测密码:“seHJ12!@”、“sjdkffH$123”、“sdf!@&12HDHa!”、“123&^YUhg@!”。其中,“sdf!@&12HDHa!”长度超过12个字符,不合规;“123&^YUhg@!”包含四个特殊字符之外的字符“^”,不合规。
#include<bits/stdc++.h>
using namespace std;
bool array_y[1010];
int main(){
string s;
int cnt1=0,cnt2=0,cnt3=0,cnt4=0,cnt5=0,cnt6_2=0,cnt6_1=0;
cin>>s;
int len=s.size();
for(int i=0;i<=len-1;i++){
if(s[i]>='A'&&s[i]<='Z'){
cnt1=1;
cnt6_2++;
}
else if(s[i]>='a'&&s[i]<='z'){
cnt2=1;
cnt6_2++;
}
else if(s[i]=='!'||s[i]=='@'||s[i]=='#'||s[i]=='$'){
cnt3++;
cnt6_2++;
}
else if(s[i]>='0'&&s[i]<='9'){
cnt4=1;
cnt6_2++;
}
else if(s[i]==','){
if(cnt5==0&&cnt3>0&&cnt1+cnt2+cnt4>=2&&cnt6_2-cnt6_1>=6&&cnt6_2-cnt6_1<=12){
for(int j=cnt6_1;j<=cnt6_2-1;j++){
cout<<s[j];
}
//cout<<cnt6_2<<" "<<cnt6_1<<" "<<i;
cout<<endl;
}
cnt1=0;
cnt2=0;
cnt3=0;
cnt4=0;
cnt6_2++;
cnt6_1=cnt6_2;
cnt5=0;
}else{
cnt5++;
cnt6_2++;
}
}
if(cnt5==0&&cnt3>0&&cnt1+cnt2+cnt4>=2&&cnt6_2-cnt6_1>=6&&cnt6_2-cnt6_1<=12){
for(int j=cnt6_1;j<=cnt6_2-1;j++){
cout<<s[j];
}
//cout<<cnt6_2<<" "<<cnt6_1<<" "<<i;
cout<<endl;
}
return 0;
}