???(0pts)

B3843 [GESP202306 三级] 密码合规

IsFrog @ 2024-06-09 15:18:08


#include<bits/stdc++.h>
using namespace std;
bool hg(string s){
    int b=0, a=0, n=0, t=0;
    if(s.length()<6 || s.length()>12){
        return false;   
    }
    for(int i=0; i<s.length(); ++i){
        if(s[i]!='0' && s[i]!='1' && s[i]!='2' && s[i]!='3' && s[i]!='4' && s[i]!='5' && s[i]!='6' && s[i]!='7' && s[i]!='8' && s[i]!='9' && s[i]!='a' && s[i]!='b' && s[i]!='c' && s[i]!='d' && s[i]!='e' && s[i]!='f' && s[i]!='g' && s[i]!='h' && s[i]!='i' && s[i]!='g' && s[i]!='k' && s[i]!='l' && s[i]!='m' && s[i]!='n' && s[i]!='o' && s[i]!='p' && s[i]!='q' && s[i]!='r' && s[i]!='r' && s[i]!='s' && s[i]!='t' && s[i]!='u' && s[i]!='v' && s[i]!='w' && s[i]!='x' && s[i]!='y' && s[i]!='z' && s[i]!='A' && s[i]!='B' && s[i]!='C' && s[i]!='D' && s[i]!='E' && s[i]!='F' && s[i]!='G' && s[i]!='H' && s[i]!='I' && s[i]!='J' && s[i]!='K' && s[i]!='L' && s[i]!='M' && s[i]!='N' && s[i]!='O' && s[i]!='P' && s[i]!='Q' && s[i]!='R' && s[i]!='S' && s[i]!='T' && s[i]!='U' && s[i]!='V' && s[i]!='W' && s[i]!='X' && s[i]!='Y' && s[i]!='Z' && s[i]!='!' && s[i]!='@' && s[i]!='#' && s[i]!='$'){
            return false;       
        }
        if(s[i]>='A' && s[i]<='Z'){
            b++;
        }
        else if(s[i]>='a' && s[i]<='z'){
            a++;
        }
        else if(s[i]>='0' && s[i]<='9'){
            n++;
        }
        else if(s[i]=='!' || s[i]=='@' || s[i]=='#' || s[i]=='$'){
            t++;
        }
    }
    if(((b!=0 && a!=0) || (b!=0 && n!=0) || (a!=0 && n!=0)) && t >= 1){
        return true;
    }
    return false;   
}
int main() {
    string str;
    getline(cin, str);
    while (!str.empty()) {
        string s;
        for (int i = 0; i < str.length(); ++i) {
            if (str[i] == ',') {
                str.erase(str.begin(), str.begin()+i);
                break;
            }
            s[i]+=str[i];
        }
        if(hg(s)){
            cout << s << endl;
        }
    }
    return 0;
}

by 2023111206li @ 2024-06-14 22:43:21

哥们,你这个代码是真的shi山啊


by 2023111206li @ 2024-06-14 22:44:44

你那个长长的那个判断写错了,h,i,j,k中i后面应该是j而不是g


by 2023111206li @ 2024-06-14 22:46:40

判断完之后,再加入一个判断,如果出现的都不是数字字母四个特殊符号,那么就return false


by 2023111206li @ 2024-06-14 22:47:54

s[i]+=str[i];改成等于


by 2023111206li @ 2024-06-14 22:49:34

hg最后一行判断数字字母特殊符号的个数也不对,特殊符号的个数应该是小于等于1


|