过样例WA

B3843 [GESP202306 三级] 密码合规

michaelwanghaoyu @ 2024-10-14 21:04:00

#include <iostream>
using namespace std;
string s;
int main()
{
    cin>>s;
    string t="";
    for(int i=0;i<s.length();i++)
    {
        if (s[i]!=',')
        {
            t += s[i];
        } 
        else 
        {
            bool pd=1;
            int xx=0,dx=0,sz=0,tsfh=0;
            for(int j=0;j<t.length();j++) 
            {
                if(t[j]>='a'&&t[j]<='z') 
                {
                    xx=1;
                } 
                else if(t[j]>='A'&&t[j]<='Z')
                {
                    dx=1;
                } 
                else if(t[j]>='0'&&t[j]<='9')
                {
                    sz=1;
                }
                else if (t[j]=='!'||t[j]=='@'||t[j]=='#'||t[j]=='$')
                {
                    tsfh=1;
                } 
                else 
                {
                    pd=0;
                    break;
                }
            }
            if(pd&&xx+dx+sz>=2&&tsfh>=1)
            {
                cout<<t<<endl;
            }
            t="";
        }
    }
    return 0;
}

by _th_tw_on_ @ 2024-10-14 21:08:27

没判长度


by _th_tw_on_ @ 2024-10-14 21:08:56

@michaelwanghaoyu


by Zhangjianing123456 @ 2024-10-14 21:10:02

密码最短长度 :6 个字符,密码最大长度 : 12个字符。


by Zhangjianing123456 @ 2024-10-14 21:24:31

if(pd&&xx+dx+sz>=2&&tsfh>=1)

改为if(pd&&xx+dx+sz>=2&&tsfh>=1&&a+b+c+d>=6&&a+b+c+d<=12)

a为小写字母的长度

b为大写字母的长度

c为数字的长度

d为特殊字符的长度


by IAKIOI14141 @ 2024-10-25 17:01:51

@Zhangjianing123456 为什么要这样写?直接判断t的长度,打个条件不就行了吗?你这样多此一举,容易挂。


if(pd&&xx+dx+sz>=2&&tsfh>=1&&t.length()<=12&&t.length()>=6)

|