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

密码验证合格程序

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

def valid(s):
    def step1(s):
        if len(s) <= 8:return False
        return True
    if not step1(s):return "NG"
    def step2(s):
        ans = 0
        sletter = set(chr(97 + i) for i in range(26))
        lletter = set(chr(ord("A") + i) for i in range(26))
        num = set('0123456789')
        s = list(s)
        for i in range(len(s)):
            if s[i] in sletter:
                s[i] = 1
            elif s[i] in lletter:
                s[i] = 2
            elif s[i] in num:
                s[i] = 3
            else:
                s[i] = 4
        if len(set(s)) < 3:
            return False
        return True
    if not step2(s):return "NG"
    def step3(s):
        n = len(s)
        for length in range(3, n + 1):
            for i in range(n - length + 1):#枚举所有3个以上的
                substring = s[i:i+length]
                for j in range(i + 1, n - length + 1):#从这个字符往后枚举
                    if substring == s[j:j+length]: #这个字符重复过了
                        return False
        return True
    if not step3(s):
        return "NG"
    return "OK"
while True:
    try:
        print(valid(input()))
    except:
        break

全部评论

相关推荐

运营3年修炼中接简历辅导:你的科研项目经历里,只写了你的动作,没有写你的思考和成果,不要只写使用什么进行了什么,这等于罗列你的任务,简历是为了突出你的优秀,你在什么样的任务背景下,克服了什么样的困难,针对性地做了哪些事情,最后达成了什么成果(用数据体现你的成果和效率)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务