HJ20 密码验证合格程序

简介: HJ20 密码验证合格程序

题目

题目连接

解题

方法一:字符串处理

#include <iostream>
#include <string>
using namespace std;
//字串重复出现次数
int count(string& s,string& t){
    int m=s.size(),n=t.size();
    int res=0;
    for(int i=0;i<m;i++){
        int u=i,v=0;
        while(u<m&&v<n){
            if(s[u]!=t[v]) break;
            u++;
            v++;
        }
        if(v==n) res++;
    }
    return res;
}
bool isValid(string& s){
    int n=s.size();
    if(n<8) return false;//长度小于8,NG
    int f1=0,f2=0,f3=0,f4=0;
    for(char c:s){
        if(c>='A'&&c<='Z') f1=1;
        else if(c>='a'&&c<='z') f2=1;
        else if(c>='0'&&c<='9') f3=1;
        else f4=1;
    }
    if(f1+f2+f3+f4<3) return false; //字符包含3种以下  NG
    for(int i=0;i<n-3;i++){
        string tmp=s.substr(i,3);
        if(count(s,tmp)>=2) return false;//字串重复出现 NG
    }
    return true;//OK
}
int main()
{
    string s;
    while(getline(cin,s)){
        bool res=isValid(s);
        if(res) cout<<"OK"<<endl;
        else cout<<"NG"<<endl;
    }
}
相关文章
|
1月前
|
C++
【PTA】L1-016 验证身份(C++)
【PTA】L1-016 验证身份(C++)
53 0
【PTA】L1-016 验证身份(C++)
|
Linux Shell 数据安全/隐私保护
Linux修改密码是提示“passwd: 鉴定令牌操作错误”问题的处理办法
今早忽然想修改一下一个普通用户的密码,root登录进去之后键入修改密码命令之后发现提示“passwd: 鉴定令牌操作错误”。
6949 0
|
10天前
|
数据安全/隐私保护
1067 试密码 (20 分)
1067 试密码 (20 分)
|
10天前
|
数据安全/隐私保护
1081 检查密码 (15 分)
1081 检查密码 (15 分)
|
1月前
|
安全 BI 数据安全/隐私保护
每天一道C语言编程:合格密码的判定
每天一道C语言编程:合格密码的判定
26 0
|
8月前
|
数据安全/隐私保护
华为机试HJ20:密码验证合格程序
华为机试HJ20:密码验证合格程序
|
10月前
|
机器学习/深度学习 数据安全/隐私保护
(leecode)密码检查
小明同学最近开发了一个网站,在用户注册账户的时候,需要设置账户的密码,为了加强账户的安全性,小明对密码强度有一定要求: 1. 密码只能由大写字母,小写字母,数字构成; 2. 密码不能以数字开头; 3. 密码中至少出现大写字母,小写字母和数字这三种字符类型中的两种; 4. 密码长度至少为8
48 0
(leecode)密码检查
|
9月前
|
Java 物联网 测试技术
软件测试--详细判断电话号码
软件测试--详细判断电话号码
100 0
|
9月前
|
C++
25.【 C/C++ QQ登入系统 (人生中第一个趋形系统)】
25.【 C/C++ QQ登入系统 (人生中第一个趋形系统)】
36 0
|
Linux 数据安全/隐私保护
Linux权权限系统(假设系统第一个用户名为admin)限系统(假设系统第一个用户名为admin)
Linux权权限系统(假设系统第一个用户名为admin)限系统(假设系统第一个用户名为admin)
44 0