题解 | #密码验证合格程序#
密码验证合格程序
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")
查看11道真题和解析