首页 > 编程 > C++ > 正文

[华为OJ--C++]017-密码验证合格程序

2019-11-08 01:46:54
字体:
来源:转载
供稿:网友

题目描述:

密码要求:

1.长度超过8位

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

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

输入描述:一组或多组长度超过2的子符串。每组占一行

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

输入例子:

021Abc9000

021Abc9Abc1

021ABC9000

021$bc9000

输出例子:

OK

NG

NG

OK

算法实现:

#include<iostream>  #include<string>#include<vector>using namespace std;    //************************************************    // * Author: 赵志乾    // * Date: 2017-2-20     // * Declaration: All Rigths Reserved !!!    //***********************************************/  bool classnum(string& ret){	int f1=0,f2=0,f3=0,f4=0;	for(int i=0;i<ret.length();i++)	{		if(ret[i]>='0'&&ret[i]<='9')			f1=1;		else if(ret[i]>='A'&&ret[i]<='Z')			f2=1;		else if(ret[i]>='a'&&ret[i]<='z')			f3=1;		else			f4=1;	}		return f1+f2+f3+f4>=3;}bool checksubstr(string&ret){	for(int i=0;i+2<ret.length();i++)	{		for(int j=i+1;j+2<ret.length();j++)			if(ret.substr(i,3)==ret.substr(j,3))				return false;	}	return true;}int main()  {  	string str;		while(getline(cin,str))	{		if(str.length()<9)		{			cout<<"NG"<<endl;			continue;		}		if(!classnum(str))		{			cout<<"NG"<<endl;			continue;		}		if(!checksubstr(str))		{			cout<<"NG"<<endl;			continue;		}		cout<<"OK"<<endl;	}	    return 0;  }  


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选