题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
#include <algorithm> #include <iostream> #include <string> #include <vector> #include <cstring> using namespace std; bool find(string str,vector<string> substr) { if(substr.size()==0) return false; for(int i = 0; i < substr.size();i++) { if(str == substr[i]) return true; } return false; } int main() { vector<string> input;//存储输入内容 string temp; while(getline(cin, temp)) { input.push_back(temp); } for(int i = 0;i<input.size();i++) { vector<bool> style(4,false);//是否使用四种字符 vector<string> substr;//存储大小为三的子串 int count = 0; if(input[i].size()<=8) { cout<<"NG"<<endl; continue; } for(int t = 0;t<input[i].size();t++) { if(input[i][t]>=48&&input[i][t]<=57) { style[0] = true; continue; } if(input[i][t]>=65&&input[i][t]<=90) { style[1] = true; continue; } if(input[i][t]>=97&&input[i][t]<=122) { style[2] = true; continue; } style[3] = true; } for(auto i:style) { if(i) count++; } if(count<3) { cout<<"NG"<<endl; continue; } bool error = true; for(int j = 0; j < input[i].size()-2;j++) { string str(""); str = str+input[i][j]+input[i][j+1]+input[i][j+2]; if(find(str,substr)) { error = false; break; } else { substr.push_back(str); } } if(error == false) { cout<<"NG"<<endl; continue; } else { cout<<"OK"<<endl; continue; } } } // 64 位输出请用 printf("%lld")