描述 | |
---|---|
知识点 | 字符串,数组 |
运行时间限制 | 0M |
内存限制 | 0 |
输入 | 一组或多组长度超过2的子符串。每组占一行 |
输出 | 如果符合要求输出:OK,否则输出NG
每行输出对应一组输入的结果; |
样例输入 | 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000 |
样例输出 | OK NG NG OK |
#include<iostream>
#include<string>
#include<vector>
using namespace std;
bool Judge_sub(string s)
{
string sub1,sub2;
for(int i=3;i<s.size();i++)
for(int j=0;j<s.size()-i;j++)
{
sub1=s.substr(j,i);
for(int k=j+1;k<s.size()-i+1;k++)
{
sub2=s.substr(k,i);
if(sub1==sub2)
return false;
}
}
return true;
}
bool Judge_count(string s)
{
if(s.size()<=8)
return false;
int lower=0,upper=0,digit=0,other=0;
for(int i=0;i<s.size();i++)
if(islower(s[i]))
lower=1;
else if(isupper(s[i]))
upper=1;
else if(isdigit(s[i]))
digit=1;
else
other=1;
if(lower+upper+digit+other<3)
return false;
else
return true;
}
int main()
{
string str[100],s;
vector<int> svec;
int i=0;
while(getline(cin,str[i]))
{
s=str[i];
if(Judge_count(s)&&Judge_sub(s))
svec.push_back(1);
else
svec.push_back(0);
i++;
}
for(int i=0;i<svec.size();i++)
if(svec[i]==1)
cout<<"OK"<<endl;
else
cout<<"NG"<<endl;
//system("pause");
return 0;
}