题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
官方解答判断长度是3子串的方法很妙
#include <cctype>
#include <iostream>
#include <set>
#include <string>
#include <vector>
using namespace std;
int main() {
string in;
set<string> sstr;
while(getline(cin, in)){
sstr.clear();
bool flag[5]{false};
int num=0;
if(in.length()<=8){
cout<<"NG"<<endl;
continue;
}
for(auto i:in){
if(isdigit(i)){
flag[1]=true;
continue;
}
if(i>='a'&&i<='z'){
flag[2]=true;
continue;
}
if(i>='A'&&i<='Z'){
flag[3]=true;
continue;
}
flag[4]=true;
}
for(int i=0;i<5;i++){
flag[i]==true?num++:flag[i];
}
if(num<3){
cout<<"NG"<<endl;
continue;
}
flag[0]=true;
for(int i=0;i<in.length()-3;i++){
if(sstr.find(in.substr(i,3))!=sstr.end()){
cout<<"NG"<<endl;
flag[0]=false;
break;
}
else{
sstr.emplace(in.substr(i,3));
}
}
if(flag[0]) cout<<"OK"<<endl;
}
}
// 64 位输出请用 printf("%lld")