您的位置:首页 > 其它

密码验证合格程序

2015-05-10 10:30 239 查看
#include <iostream>
#include <string>
#include <vector>
using namespace std;

//计算字符串中字符的种类
int calTypeKinds(string &str)
{
int count[4];
memset(count , 0 , sizeof(int)*4);
for(size_t i = 0; i < str.length(); ++i)
{
if(str[i] >= 'A' && str[i] <= 'Z')
{
count[0]++;
}
else if(str[i] >= 'a' && str[i] <= 'z')
{
count[1] ++;
}
else if(str[i] >= '0' && str[i] <= '9')
{
count[2] ++;
}
else
{
count[3]++;
}
}
int typeNum =0;
for(int i = 0; i <4; ++i)
{
if(0 != count[i])
{
typeNum ++;
}
}
return typeNum;

}

bool isContainSameSubstr(string &str)
{
size_t len = str.length();
for(int i = 0; i < len -2; ++i)
{
for(int j = i + 1; j < len -2; ++j)
{
if(strncmp(&(str[i]), &(str[j]), 3) == 0)
{
return true;
}
}
}
return false;
}

int main()
{
string str;
bool flag = false;
int typeTotal = 0;
while(cin>>str)
{
flag = false;
typeTotal =0;
//1. 判断长度是否超过8
//2. 计算字符串中的字符类型
typeTotal = calTypeKinds(str);
//3. 判断字符串中是否有长度超过2的相同子串
bool sameFlag = isContainSameSubstr(str);
if( str.length() > 8 && typeTotal >=3 && sameFlag == false)
{
cout<<"OK"<<endl;
}
else
{
cout<<"NG"<<endl;
}
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: