题解 | #密码验证合格程序#

密码验证合格程序

https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841

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


int isOk(char c){
    if(c>='0'&&c<='9'){
       //cout<<c<<" : "<<0<<"   ";
        return  0;
    }
    if((c>='!'&&c<='\\')||(c>=':'&&c<='@')||(c>='['&&c<=96)||(c>='{'&&c<='~')){
        //cout<<c<<" : "<<1<<"   ";
        return 1;
    }
    if(c>='A'&&c<='Z'){
        //cout<<c<<" : "<<2<<"   ";
        return  2;
    }
    if(c>='a'&&c<='z'){
        //cout<<c<<" : "<<3<<"   ";
        return 3;
    }
    //cout<<c<<" : "<<4<<"   ";
    return 4;
}

 vector<int> findPos(string str,const char c){
    vector<int> vint;
    for(int i=0;i<str.length();i++){
        int pos=-1;
        pos=str.substr(i).find_first_of(c);
        //cout<<"pos: "<<pos<<endl;
        if(pos!=-1){
            vint.push_back(pos+i);
            //cout<<c<<" : "<<pos+i<<endl;
            i=pos+i;
        }
    }
    return  vint;
 }

int main() {
    string str;
    while(getline(cin, str)){
        int pd[5]={0,0,0,0,0};
        bool beNG=false;
        if(str.length()>8&&str.length()<=100){
            for(int i=0;i<str.length();i++){
                pd[isOk(str[i])]=1;
            }
            //cout<<str<<endl;
            //cout<<pd[0]<<" "<<pd[1]<<" "<<pd[2]<<" "<<pd[3]<<" "<<pd[4]<<endl;
            int Vpd=pd[0]+pd[1]+pd[2]+pd[3];
            if((Vpd>=3&&pd[4]==0)){
                for(int i=0;i<str.length();i++){
                    vector<int> vint;
                    vint = findPos(str, str[i]);
                    if(vint.size()>1){
                        for(int j=0;j<vint.size();j++){
                            for(int m=j+1;m<vint.size();m++){
                                //cout<<str[vint[j]]<<" : "<<(str.length()>vint[j]+1)<<" "<<(str.length()>vint[j+1]+1)<<" "<<(str.length()>vint[j]+2)<<" "<<(str.length()>vint[j+1]+2)<<endl;
                                if((str.length()>vint[j]+1)&&(str.length()>vint[j]+2)&&(str.length()>vint[m]+1)&&(str.length()>vint[m]+2)){
                                    //cout<<str[vint[j]]<<" "<<str[vint[j]+1]<<" "<<str[vint[j]+2]<<endl;
                                    //cout<<str[vint[m]]<<" "<<str[vint[m]+1]<<" "<<str[vint[m]+2]<<endl;
                                    //cout<<"-------"<<endl;
                                    if((str[vint[j]+1]==str[vint[m]+1])&&(str[vint[j]+2]==str[vint[m]+2])){
                                        cout<<"NG"<<endl;
                                        beNG=true;
                                        break;
                                    }
                                }
                            }
                            if(beNG) break;
                        }
                        if(beNG) break;
                    }
                    
                }
            }else{
                beNG=true;
                cout<<"NG"<<endl;
            }
            
        }else{
            beNG=true;
            cout<<"NG"<<endl;
        }
        if(!beNG){
            cout<<"OK"<<endl;
        }
        
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

点赞 评论 收藏
分享
北漂的牛马人:211佬,包进的,可能是系统问题
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务