分析:注意题目中应该满足的两个条件,第一个条件容易丢失。
(1).密码长度大于等于8,且不要超过16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
#include <iostream>
#include <algorithm>
#include <map>
#include <string> #没有这行会报错
using namespace std;
int main() {
int n;
string a;
int len;
int count;
int flag0,flag1,flag2,flag3;
cin >> n;
char b[7]={'~','!','@','#','$','%','^'};
while (n--){
count=0;
flag0=0,flag1=0,flag2=0,flag3=0;
cin >> a;
len= a.length();
for(int i=0;i<len;i++){
if(a[i]>='A' && a[i] <= 'Z'){
flag0=1;
continue;
}
if(a[i]>='a' && a[i] <= 'z'){
flag1=1;
continue;
}
if(a[i]>='0' && a[i] <= '9'){
flag2=1;
continue;
}
for(int j=0;j<7;j++){
if(b[j]==a[i]){
flag3=1;
break;
}
}
}
count=flag0+flag1+flag2+flag3;
if(count>=3 && len >= 8 && len <= 16){
cout << "YES" << endl;
} else{
cout << "NO" << endl;
}
}
return 0;
}