题目

为了保证他的密码强度,牛牛使用他的“字符串筛选器”来测试密码的强度。

具体来说,他先将输入的字符串筛选分成四部分。

第一部分仅由小写英文字母组成

第二部分仅由大写英文字母组成

第三部分仅由0到9的数字组成

第四部分由其余特殊字符组成

这四部分要保留它们在原字符串中的相对顺序。

比如将"1q2w3E4R5{6}"这个字符串进行筛选后

四部分分别为:"qw"、"ER"、"123456"、"{}"。

然后只要某一部分不为空,牛牛就认为他的密码等级高1级。

密码等级最低为1级,最高4级。

例如,"asdA@123"的密码等级为4,"20020101"的密码等级为1。

请判断密码等级,输出该密码做字符串筛选后的结果。

解题思路

遍历密码字符串中的字符,模拟题意中的字符串筛选器进行筛选,最后输出结果。

C++代码

#include<iostream>
#include<vector>
using namespace std;

int main(){
    string s;
    cin >> s;
    vector<string> t(4, "");
    for(auto c : s){
        if(c>='a' && c<='z') t[0] += c;
        else if(c>='A' && c<='Z') t[1] += c;
        else if(c>='0' && c<='9') t[2] += c;
        else t[3] += c;
    }
    int level = 0;
    for(int i=0; i<4; ++i){
        if(t[i]=="") t[i]="(Null)";
        else ++level;
    }
    cout << "password level:" << level << endl;
    for(int i=0; i<4; ++i)
        cout << t[i] << endl;
    return 0;
}