密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
输入例子:
021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000
输出例子:
OK NG NGOK
#include <iostream> #include <string> using namespace std; int main() { string str; while(cin>>str) {//getline(cin,str); int c1 = 0, ca = 0, cA = 0, co = 0, temp; int len = str.length(); if (len <= 8) cout << "NG"<<endl; else { string sub1, sub2; bool flag = false; for (int i = 0; i < len - 2; i++) { sub1 = str.substr(i, 3); for (int j = i + 1; (j < len - 3) && (flag == false); j++) { sub2 = str.substr(j, 3); if (sub1 == sub2) flag = true; } } if (flag == true) cout << "NG"<<endl; else { for (int i = 0; i < len; i++) { if (isdigit(str[i])) c1 = 1; else if (islower(str[i])) ca = 1; else if (isupper(str[i])) cA = 1; else co = 1; } temp = c1 + ca + cA + co; if (temp >= 3) cout << "OK"<<endl; else cout << "NG"<<endl; } } } return 0; }