题解 | #密码验证合格程序#

密码验证合格程序

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;
        }
    }
}

}

全部评论

相关推荐

10-29 15:51
嘉应学院 Java
后端转测开第一人:你把简历的学历改成北京交通大学 去海投1000份发现基本还是没面试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务