密码验证合格程序
2017-02-27 17:41
120 查看
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
输入例子:
输出例子:
#include<iostream>
#include<string>
using namespace std;
void checkUserName(string str);
int main(){
string str;
while(cin>>str){
checkUserName(str);
str="";
}
return 0;
}
void checkUserName(string str){
if(str.size()<=8){
cout<<"NG"<<endl;
return;
}
int a[4]={0};
for(int i=0;i<str.size();i++){
if(str[i]>='a'&&str[i]<='z'){
a[0]=1;
}
if(str[i]>='A'&&str[i]<='Z'){
a[1]=1;
}
if(str[i]>='0'&&str[i]<='9'){
a[2]=1;
}else{
a[3]=1;
}
}
if(a[0]+a[1]+a[2]+a[3]<3){
cout<<"NG"<<endl;
return;
}
for(int k=0;k<str.size()-3;k++){
for(int p=k+2;p<str.size();p++){
if(str[p]==str[k]&&str[p+1]==str[k+1]&&str[p+2]==str[k+2]){
cout<<"NG"<<endl;
return;
}
}
}
cout<<"OK"<<endl;
}
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
输入例子:
021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000
输出例子:
OK NG NG OK
#include<iostream>
#include<string>
using namespace std;
void checkUserName(string str);
int main(){
string str;
while(cin>>str){
checkUserName(str);
str="";
}
return 0;
}
void checkUserName(string str){
if(str.size()<=8){
cout<<"NG"<<endl;
return;
}
int a[4]={0};
for(int i=0;i<str.size();i++){
if(str[i]>='a'&&str[i]<='z'){
a[0]=1;
}
if(str[i]>='A'&&str[i]<='Z'){
a[1]=1;
}
if(str[i]>='0'&&str[i]<='9'){
a[2]=1;
}else{
a[3]=1;
}
}
if(a[0]+a[1]+a[2]+a[3]<3){
cout<<"NG"<<endl;
return;
}
for(int k=0;k<str.size()-3;k++){
for(int p=k+2;p<str.size();p++){
if(str[p]==str[k]&&str[p+1]==str[k+1]&&str[p+2]==str[k+2]){
cout<<"NG"<<endl;
return;
}
}
}
cout<<"OK"<<endl;
}