小结

这道题,投机取巧。 只判断了,三位数是否有重复的;

using namespace std;
// 48 -57 (0-9)
// 65-90 (A-Z)
// 97-122
int main()
{
    const int judge_number = 1;
    const int judge_daxie= 2;
    const int judge_xiaoxie = 3;
    const int judge_symbool = 4;
    string in_str;
    while(cin>>in_str)
    {
        bool isok = true;
        set<int> int_set;
        if(in_str.size()<=8)
        {
            cout<<"NG"<<endl;
            break;
        }
        if(in_str.size()>8)
        {
            for(auto &t:in_str)
            {
                if(t>=48&& t<=57)
                {
                  int_set.insert(judge_number);
                }
                else if(t>=65&& t<=90)
                {
                  int_set.insert(judge_daxie);
                }
                else if(t>=97&& t<=122)
                {
                  int_set.insert(judge_xiaoxie);
                }
                else
                {
                  int_set.insert(judge_symbool);
                }
            }
        }
        if(int_set.size()>=3)
        {
            for(int i =0;i<in_str.size()-3;i++)
            {
                string temp = in_str.substr(i,3);
                string str_s =in_str;
                str_s= str_s.erase(i, 3);
                size_t pos = str_s.find(temp);
                if(pos!=str_s.npos)
                {
                    cout<<"NG"<<endl;
                    isok = false;
                    break;
                }
            }
            if(isok)
            {
                cout<<"OK"<<endl;
            }
        }
        else
        {
            cout<<"NG"<<endl;
        }
    }
    return 0;
}