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

https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841

def func(zifuchuan):
    list1 = [0,0,0,0] #由于要判断四种情况,所以为了计算,就在列表中添加四个变量
    if len(zifuchuan) < 8:  #首先判断字符串长度
        return False
    for i in zifuchuan: #遍历字符串,看字符串中的字符的不同类型数量
        if i.isupper():
            list1[0] = 1
        elif i.islower():
            list1[1] = 1
        elif i.isdigit():
            list1[2] = 1
        else:
            list1[3] = 1
    if sum(list1) < 3: #第二条要求,不同类型要大于等于3种
        return False
    for j in range(len(zifuchuan) - 2):  #为了满足第三条不能有长度大于2的包含公共元素的子串重复,所以就先在字符串中截断了
        chongfu = zifuchuan[j:j+3]  #如果有三个重复了,那肯定包含第三条要求
        if chongfu in zifuchuan[j+3:]: #判断第三条要求
            return False
    return True
while True:
    try:
        zifuchuan = input()
        if func(zifuchuan):
            print('OK')
        else:
            print('NG')
    except:
        break
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务