题目
题目描述
牛牛在注册不同的网站时,总是会使用不同的密码来保证他的账号安全。 为了保证他的密码强度,牛牛使用他的“字符串筛选器”来测试密码的强度。 具体来说,他先将输入的字符串筛选分成四部分。
第一部分仅由小写英文字母组成
第二部分仅由大写英文字母组成
第三部分仅由0到9的数字组成
第四部分由其余特殊字符组成
这四部分要保留它们在原字符串中的相对顺序。
比如将"1q2w3E4R5{6}"这个字符串进行筛选后
四部分分别为:"qw"、"ER"、"123456"、"{}"。
然后只要某一部分不为空,牛牛就认为他的密码等级高1级。 密码等级最低为1级,最高4级。 例如"asdA@123"的密码等级为4,"20020101"的密码等级为1。
请帮助牛牛判断他注册账号时的密码等级,以及该密码做字符串筛选后的结果。
输入格式
仅一行一个字符串s,表示牛牛的密码。
输出格式
首先输出一行"password level:X",X表示牛牛的密码等级,最低为1级,最高4级。
接下来输出4行,表示四部分的筛选结果,输出时要注意保留它们在原字符串中的相对顺序,如果某一部分为空串,则改为在该行输出"(Null)"。
样例
样例输入1
123456
样例输出1
password level:1
(Null)
(Null)
123456
(Null)
样例输入2
Pass_Word
样例输出2
password level:3
assord
PW
(Null)
_
数据范围与提示
对于20%的测试数据,保证仅有小写英文字母组成,且1≤∣s∣≤100
对于40%的测试数据,保证仅有大小写英文字母组成,且1≤∣s∣≤100
对于100%的测试数据,保证字符串是不含空格、回车、或者其他不可见字符的非空字符串,且保证字符串长度1≤∣s∣≤10^4。
代码又臭又长
#include <bits/stdc++.h>
using namespace std;
class Password{
public:
short Level = 0;
string Password;
string Member[4] = {"(Null)", "(Null)", "(Null)", "(Null)"};
};
Password GetLevel(string PasWor){
bool Level[4] = {0, 0, 0, 0};
Password PaWo1;
PaWo1.Password = PasWor;
string Tmp;
for(int i = 0; i < PaWo1.Password.length(); i++){
Tmp = PaWo1.Password[i];
if(int(PaWo1.Password[i]) > 47 and int(PaWo1.Password[i]) < 58){
if(Level[2] == false)
PaWo1.Member[2] = "";
Level[2] = true;
PaWo1.Member[2] = PaWo1.Member[2] + Tmp;
}
else if(int(PaWo1.Password[i]) > 64 and int(PaWo1.Password[i]) < 91){
if(Level[1] == false)
PaWo1.Member[1] = "";
Level[1] = true;
PaWo1.Member[1] = PaWo1.Member[1] + Tmp;
}
else if(int(PaWo1.Password[i]) > 96 and int(PaWo1.Password[i]) < 123){
if(Level[0] == false)
PaWo1.Member[0] = "";
Level[0] = true;
PaWo1.Member[0] = PaWo1.Member[0] + Tmp;
}
else{
if(int(PaWo1.Password[i]) != 0){
if(Level[3] == false)
PaWo1.Member[3] = "";
Level[3] = true;
PaWo1.Member[3] = PaWo1.Member[3] + Tmp;
}
}
}
for(int i = 0; i < 4; i++){
if(PaWo1.Member[i] != "(Null)")
PaWo1.Level++;
}
return PaWo1;
}
int main(){
std::ios::sync_with_stdio(false);
string PaswoR;
cin >> PaswoR;
Password PaWo1 = GetLevel(PaswoR);
cout << "password level:" << PaWo1.Level << "\n";
for(int i = 0; i < 4; i++){
cout << PaWo1.Member[i] << "\n";
}
return 0;
}