小米 笔试题 密码按要求检测 c++ 已AC

 2020/9/8  小米编程第一题,c++已ac

题目:密码要求检测

要求:长度在8-120 之间,密码包括 大写 小写 数字 和符号,  长度不符合 输出1 类型不符合输出2 密码都符合输出0

给的输入为:123 12345678 123abcABC!!!  

输出;

1

2

0

#include<bits/stdc++.h>
using namespace std;
int main()
{

    stringstream ss;
    string str;
    vector<string> v;
    getline(cin,str);   //先把这一行全部输入道str中


    //使用stringstream进行处理  是以空格进行分割的
    ss<<str;
    string str2;
    while(ss>>str2)
    {
        v.push_back(str2);
    }

    //例如: 123 12345678 123abcABC!!!
    //处理之后v中包含了三个字符串  然后我们在去对每个字符串进行判断是否满足条件
    for(auto i : v)
    {
        //i是一个字符串
        if(i.size()<8 || i.size()>120)
        {
            cout<<"1"<<endl;
            continue;
        }

        //能走下来长度是符合
        //标记一种状态,全部为false
        bool flagupper = false;
        bool flaglower = false;
        bool flagdigit= false;
        bool flagpunct= false;
        for(auto j : i)
        {
            //这里的j是i字符串中的一个字符
            //只要满足这些条件,就改变状态为true;
            if(isupper(j) )
            {
                flagupper =  true;
            }
            else if(islower(j))
            {
                flaglower=true;
            }
            else if(isdigit(j))
            {
                flagdigit=true;
            }
            else if(ispunct(j) )
            {
                flagpunct=true;
            }
        }
        //只有状态都满足的时候,我们才输出 0
        if(flagdigit && flaglower&&flagupper&&flagpunct)
        {
            cout<<"0"<<endl;
        }
        else
        {
            cout<<"2"<<endl;
        }
        //一组密码检测完成后,要将状态改回去
        flagdigit=false;
        flaglower=false;
        flagpunct=false;
        flagupper=false;

    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值