题解 | #密码验证合格程序#__huawei_no.20
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
#include<iostream> #include<string> using namespace std; int main() { string s; while (cin >> s) { if (s.length() <= 8) { //长度不超过不可行 cout << "NG" << endl; continue; } int flag[4] = {0}; for (int i = 0; i < s.length(); i++) { if (s[i] >= 'A' && s[i] <= 'Z') //大写字母 flag[0] = 1; else if (s[i] >= 'a' && s[i] <= 'z') //小写字母 flag[1] = 1; else if (s[i] >= '0' && s[i] <= '9') //数字 flag[2] = 1; else //其他符号 flag[3] = 1; } if (flag[0] + flag[1] + flag[2] + flag[3] < 3) { //符号少于三种 cout << "NG" << endl; continue; } bool repute = false; //记录重复子串 for (int i = 0; i <= s.length() - 6; i++) //遍历检查是否有长度为3的相同的字串 for (int j = i + 3; j < s.length(); j++) if (s.substr(i, 3) == s.substr(j, 3)) { repute = true; break; } if (repute) //有重复 cout << "NG" << endl; else cout << "OK" << endl; } return 0; }
看似很难,实则很简单。