密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
一组或多组长度超过2的子符串。每组占一行
如果符合要求输出:OK,否则输出NG
示例1代码如下:
#include<iostream> #include<string> #include<cstring> using namespace std; bool mima(string s) { if (s.length() <= 8) { return false; } int a = 0; int b = 0; int c = 0; int d = 0; //看是否满足4种中至少有3种 for (int i = 0; i < s.length();i++) { if (s[i]>='A'&&s[i]<='Z') { a = 1; } else if (s[i] >= 'a'&&s[i] <= 'z') { b = 1; } else if (s[i] >= '0'&&s[i] <= '9') { c = 1; } else { d = 1; } } if (a + b + c + d < 3) { return false; } //检查是否存在长度超2的子串重复 for (int i = 3; i < s.length()/2;i++) { for (int j = 0; j < s.length()-i;j++) { string tmp = s.substr(j,i); int t = j + i; for (; t < s.length()-i; t++) { if (tmp.compare(s.substr(t, i)) == 0) { return false; } } } } return true; } int main() { string input; while (cin >> input) { if (mima(input)) { cout << "OK" << endl; } else { cout << "NG" << endl; } } return 0; }