原题传送门
前言
咳咳,由于本人最近在备考GESP三级,所以可能会有很多水的题解。(见谅……见谅……)
由于今天刚刚重新刷了一遍此题,所以记忆犹新。(太菜了!一个测试点都能 WA )
题目解析
简单的四点!
这题是要让我们判断密码是否合法。
判断条件1:只能由 \(\texttt {a ∼ z}\) 之间 26 个小写字母、 \(\texttt {A ∼ Z}\) 之间 26 个大写字母、\(0 ∼ 9\) 之间 \(10\) 个数字以及 ! @ # $ 四个特殊字符构成。
判断条件2:密码最短长度 : \(6\) 个字符,密码最大长度 : \(12\) 个字符。
判断条件3:大写字母,小写字母和数字必须至少有其中两种,以及至少有四个特殊字符中的一个。
思路解析
这道题只要弄懂了题意,就非常简单,做个模拟,就行了。(你做错的那次纯属眼瞎)
呵呵……
Code
点击查看代码
#include
using namespace std;
string s;
string t;
void chack(string a){
int AB=0,ab=0,ze=0,on=0;
if(a.length()>12||a.length()<6){
return;
}
for(int i=0;i if(!((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')||(a[i]>='0'&&a[i]<='9')||(a[i]=='!')||(a[i]=='@')||(a[i]=='#')||(a[i]=='$'))){ return ; } if(a[i]>='a'&&a[i]<='z') ab=1; if(a[i]>='A'&&a[i]<='Z') AB=1; if(a[i]>='0'&&a[i]<='9') ze=1; if((a[i]=='!')||(a[i]=='@')||(a[i]=='#')||(a[i]=='$')) on=1; } if(ab+AB+ze>=2 && on==1){