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

密码验证合格程序

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

几点注意:

  • 条件2:判断属于小写字母、大写字母、数字或特殊符号,不需要关心对应的十进制数,直接用字符进行比较;
  • 条件3:不存在长度大于2的重复子串,只需要判断是否存在长度为3的重复子串即可(哈希表法),因为长度大于等于3的重复子串都一定包含了长度为3的重复子串
def check():
    # 输入一组字符串
    string = input()
    # 条件1:长度超过8
    if len(string) <= 8:return 0
    # 条件2:小写字母、大写字母、数字、特殊符号,必须至少包含3种
    a,b,c,d = 0,0,0,0
    for i in string:
        if 'a' <= i <= 'z':
            a = 1
        elif 'A' <= i <= 'Z':
            b = 1
        elif '0' <= i <= '9':
            c = 1
        else:
            d = 1
    if a+b+c+d < 3: return 0
    # 条件3:重复子串的长度不能大于2
    dic = {}
    for i in range(len(string)-3):
        subString = string[i:i+3]
        if subString not in dic:
            dic[subString] = 1
        else:
            dic[subString] += 1
            if dic[subString] >=2 : return 0
    return 1

while True:
    try:
        if check():
            print("OK")
        else:
            print("NG")
    except:
        break
        
全部评论

相关推荐

变异者:10元一天好笑程度100% 我去是哪个意思好笑程度1000%
点赞 评论 收藏
分享
8 收藏 评论
分享
牛客网
牛客企业服务