链接:https://ac.nowcoder.com/acm/contest/7604/A
来源:牛客网
题目描述
牛牛在注册不同的网站时,总是会使用不同的密码来保证他的账号安全。
为了保证他的密码强度,牛牛使用他的“字符串筛选器”来测试密码的强度。
具体来说,他先将输入的字符串筛选分成四部分。
第一部分仅由小写英文字母组成
第二部分仅由大写英文字母组成
第三部分仅由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 输出 复制 password level:1 (Null) (Null) 123456 (Null)
示例2 输入 复制 Pass_Word 输出 复制 password level:3 assord PW (Null)
备注: 对于20%20\%20%的测试数据,保证仅有小写英文字母组成,且1≤∣s∣≤1001 \leq |s| \leq 1001≤∣s∣≤100 对于40%40\%40%的测试数据,保证仅有大小写英文字母组成,且1≤∣s∣≤1001 \leq |s| \leq 1001≤∣s∣≤100 对于100%100\%100%的测试数据,保证字符串是不含空格、回车、或者其他不可见字符的非空字符串,且保证字符串长度1≤∣s∣≤1041 \leq |s| \leq 10^41≤∣s∣≤104。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[100010];
int x=0,y=0,z=0,q=0;
vector<char>one;
vector<char>two;
vector<char>three;
vector<char>four;
scanf("%s",&a);
int len=strlen(a);
for(int i=0;i<len;i++)
{
if(a[i]>=97&&a[i]<=122)
{ x=1;
one.push_back(a[i]);
}
else if(a[i]>=65&&a[i]<=90)
{ y=1;
two.push_back(a[i]);}
else if(a[i]>=48&&a[i]<=57)
{ z=1;
three.push_back(a[i]);}
else
{ q=1;
four.push_back(a[i]);}
}
cout<<"password level:"<<x+y+z+q<<endl;
if(!one.empty())
{
for(auto it1=one.begin();it1!=one.end();it1++)
{
cout<<*it1;
}
cout<<endl;
}
else cout<<"(Null)\n";
if(!two.empty())
{
for(auto it2=two.begin();it2!=two.end();it2++)
{
cout<<*it2;
}
cout<<endl;
}
else cout<<"(Null)\n";
if(!three.empty())
{
for(auto it3=three.begin();it3!=three.end();it3++)
{
cout<<*it3;
}
cout<<endl;
}
else cout<<"(Null)\n";
if(!four.empty())
{
for(auto it4=four.begin();it4!=four.end();it4++)
{
cout<<*it4;
}
cout<<endl;
}
else cout<<"(Null)";
return 0;
} 
京公网安备 11010502036488号