题目描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
程序:
此程序冗杂,但思路简单
#include<iostream> #include<cstring> using namespace std; int main() { char a[100]; int n,flag=1,flag_max=0,flag_min=0,flag_number=0,flag_char=0; while(cin.getline(a,100)) { n=strlen(a); flag=1; flag_max=0; flag_min=0; flag_number=0; flag_char=0; if(n<=8) //判断条件1 flag=0; for(int i=0;i<n;i++) //判断条件2 { if(a[i]>='0'&&a[i]<='9') flag_number=1; else if(a[i]>='A'&&a[i]<='Z') flag_max=1; else if(a[i]>='a'&&a[i]<='z') flag_min=1; else flag_char=1; } for(int i=n-3;i>0;i--) //判断条件3 { for(int j=0;j<i-3;j++) { if(a[i]==a[j]&&a[i+1]==a[j+1]&&a[i+2]==a[j+2]) flag=0; } } if((flag_number+flag_char+flag_max+flag_min)<3) //判断条件2 flag=0; if(flag) cout<<"OK"<<endl; else cout<<"NG"<<endl; } }