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

密码验证合格程序

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

}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务