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

密码验证合格程序

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

# s.isupper(), s.islower(),s.isdigit(), isalnum()
# try, except break
# 难点在于如何判断是否有子串重复

def has_repeat_substring(s):
# 判断方法:双指针,i指向第一个指针,j指向第二个指针。每到一个新的i,j就在i+3往后遍历一遍,把子串记录下来
# 如果当前子串曾经出现过,则return true,都循环完则返回false
    sub_string = []
    for i in range(len(s)):
        for j in range(i+3,len(s)+1): #字串长度大于2
            a = s[i:j]
            if a in sub_string:
                return True
            else:
                sub_string.append(a)
    return False

while True:
    try:
        s = input()
        flag = [False]*5
        if len(s) > 8:
            flag[0] = any(char.isupper() for char in s)
            flag[1] = any(char.islower() for char in s)
            flag[2] = any(char.isdigit() for char in s)
            flag[3] = any(not char.isalnum() for char in s)
            flag[4] = not has_repeat_substring(s)
            if sum(flag[0:4])>= 3 and flag[4]:
                print('OK')
            else:
                print('NG')
        else:
            print('NG')
    except:
        break

全部评论

相关推荐

孙艹肘:校招不给三方直接让实习我都去了,,主打一个在学校呆着也是闲着,不如出来实习一下
点赞 评论 收藏
分享
牛马人的牛马人生:500一天吗?香麻了
投递字节跳动等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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