题解 | 密码验证合格程序

密码验证合格程序

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

分类讨论,逐渐提高判断复杂度

  1. 长度
  2. 利用正则判断密码类型
  3. 将所有的子串保存下来,然后通过set()去重,判断是否有重复即可
import re
import sys

def check(p) -> bool:
    # 判断长度
    if len(p) < 8:
        return False
    # 判断类型
    t_num = re.search("[0-9]", p)
    t_low = re.search("[a-z]", p)
    t_upp = re.search("[A-Z]", p)
    t_spc = re.search("[^0-9a-zA-Z]", p)
    if [t_num, t_low, t_upp, t_spc].count(None) > 1:
        return False
    sub_str_list = []
    for i in range(0, len(p)-3):
        sub_str_list.append(p[i:i+3])
    if len(set(sub_str_list)) != len(sub_str_list):
        return False
    return True
    

for line in sys.stdin:
    line = line.strip()
    if check(line):
        print("OK")
    else:
        print("NG")

全部评论

相关推荐

2025-12-09 18:12
门头沟学院 Web前端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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