题解 | #密码验证合格程序#
密码验证合格程序
http://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
1.长度超过8位
若长度不满足,输出后continue
2.三种及以上字符
挨个检测字符,检测出某种字符,++n,break跳出for循环
判断n是否>=3
否,输出NG
是->判断第三个条件
3.
双重循环,
一重递增子字符串的长度,从3~str.size()-1
二重递增子字符串起始位置
4.代码
#include<iostream>
#include<vector>
#include</vector></iostream>
using namespace std;
int find_str(string str)
{
for(int m = 3;m<str.size()-1;m++)
{
for(int i = 0;i<str.size()-m;i++)
{
string s = str.substr(i,m);
if(str.find(s,i+m) != str.npos)
{
return 1;
}
}
}
return 0;
}
int main()
{
string str;
vector<string> vec;</string>
while(cin>>str) { if(str.size()<=8) { cout<<"NG"<<endl; continue; } int n = 0; for(int i = 0;i<str.size();i++) { if(str[i]>='a'&&str[i]<='z') { ++n; break; } } for(int i = 0;i<str.size();i++) { if(str[i]>='A'&&str[i]<='Z') { ++n; break; } } for(int i = 0;i<str.size();i++) { if(str[i]>='0'&&str[i]<='9') { ++n; break; } } for(int i = 0;i<str.size();i++) { if((str[i]>='A'&&str[i]<='Z')||(str[i]>='0'&&str[i]<='9')||(str[i]>='a'&&str[i]<='z')) { } else { ++n; break; } } if(n<3) cout<<"NG"<<endl; else { if(find_str(str)) { cout<<"NG"<<endl; } else { cout<<"OK"<<endl; } } }
}