HJ20 密码验证合格程序

HJ20 密码验证合格程序

描述

密码要求:
1.长度超过8位

2.包括大小写字母.数字.其它符号,以上四种至少三种

3.不能有长度大于2的不含公共元素的子串重复 (注:其他符号不含空格或换行)

数据范围: 输入的字符串长度满足 1≤n≤100
输入描述: 一组字符串。
输出描述: 如果符合要求输出:OK,否则输出NG

示例1

输入:
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
输出:
OK
NG
NG
OK
#要求3长度大于2的字符串重复,输出 NG
def check_password(password: str):
    import re
    pattern = re.compile("^[^\n\t]$")
    if len(password) > 8:
        count = 0
        if re.search('[a-z]', password):
            count += 1
        if re.search('[A-Z]', password):
            count += 1
        if re.search('[0-9]', password):
            count += 1
        if re.search('\W', password):
            count += 1
        if re.match(pattern, password) is None and count > 2:
            v = {}
            for i in range(len(password)-2):
                # 长度大于2的字符串
                if v.get(password[i: i+3]):
                    return "NG"
                else:
                    v[password[i: i+3]] = 1
            return "OK"
    return "NG"


while True:
    try:
        print(check_password(input("")))
    except:
        break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值