您的位置:首页 > 其它

密码验证合格程序

2017-08-30 15:57 274 查看


题目描述

密码要求:

 

1.长度超过8位

 

2.包括大小写字母.数字.其它符号,以上四种至少三种

 

3.不能有相同长度超2的子串重复

 

说明:长度超过2的子串

输入描述:

一组或多组长度超过2的子符串。每组占一行

输出描述:

如果符合要求输出:OK,否则输出NG

示例1

输入

021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000


输出

OK

NG

NG

OK

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

bool RepeatedSubStr(string s, int len)
{
for (int i = 0; i<len - 2; i++)
{
string s1 = s.substr(i, 3);
if (s.find(s1, i + 3) != string::npos)
return false;
}
return true;
}

int main()
{
string s;
vector<string> vec;
while (getline(cin, s))
{
int flag[4] = { 0 };
int len = s.length();
if (len <= 8)
{
vec.push_back("NG");
continue;
}
for (int i = 0; i<len; i++)
{
if (s[i] >= '0'&&s[i] <= '9')
flag[0] = 1;
else if (s[i] >= 'a'&&s[i] <= 'z')
flag[1] = 1;
else if (s[i] >= 'A'&&s[i] <= 'Z')
flag[2] = 1;
else
flag[3] = 1;
}
if (flag[0] + flag[1] + flag[2] + flag[3]<3)
{
vec.push_back("NG");
continue;
}
if (!RepeatedSubStr(s, len))
{
vec.push_back("NG");
continue;
}
vec.push_back("OK");
}
vector<string> ::iterator iter;
for (iter = vec.begin(); iter != vec.end(); iter++)
cout << *iter << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: