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

密码验证合格程序

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

def check(s):
    if len(s) <= 8:
        return 0
    a, b, c, d = 0, 0, 0, 0
    for item in s:
        if ord('a') <= ord(item) <= ord('z'):
            a = 1
        elif ord('A') <= ord(item) <= ord('Z'):
            b = 1
        elif ord('0') <= ord(item) <= ord('9'):
            c = 1
        else:
            d = 1
    if a + b + c + d < 3:
        return 0
    for i in range(len(s)-3):
        if len(s.split(s[i:i+3])) >= 3:
            return 0
    return 1

while 1:
    try:
        print('OK' if check(input()) else 'NG')
    except:
        break
全部评论
len(s.split(s[i:i+3])) >= 3 这个判断方法好巧妙啊,佩服
48 回复 分享
发布于 2021-12-08 18:33
大神 收下我的膝盖
9 回复 分享
发布于 2021-10-28 19:00
这个split很nb
8 回复 分享
发布于 2022-06-11 21:23
大佬,不取ascll码直接比较也是可以的
7 回复 分享
发布于 2022-03-19 17:51
想问下什么叫“不能有长度大于2的不含公共元素的子串重复 (注:其他符号不含空格或换行)”,一直不理解这句话的意思
5 回复 分享
发布于 2022-01-24 12:00
16行为啥是减3……len(s)=10,range(10-3)是0到6,最后一个i是6,s[i:i+3]是s[6:9],切片左闭右开,落下了末尾字符啊
3 回复 分享
发布于 2022-03-28 21:52
len(s.split(s[i:i+3])) >= 3 这个检验子串有问题,可能是用例没有覆盖到,题目说的是“包含公共元素的子串”,如ababa,两个aba,其中公共元素是a,这种情况会误判合格
3 回复 分享
发布于 2022-08-11 00:06
感觉还要把特殊符号中的空格和换行去掉 换行也许可以不去
2 回复 分享
发布于 2022-02-23 19:10
秒啊,就第三个判断条件,太妙了。我print(in_put.split(in_put[i:i+3]))才明白大佬在干什么
2 回复 分享
发布于 2022-06-30 23:38
如果重复的字段在最后,len(s.split(s[i:i+3]))==2 ,不会大于3 比如: abc%1234abc
2 回复 分享
发布于 2023-07-11 16:31 广东
题目的第二个条件:不能有长度大于2的包含公共元素的子串重复 包含公共元素这个怎么理解?子串不都是原字符串里派生出来的吗?不都是公共的,这么说不是多次一举? 另一种理解是两个子串部分重叠,这样这两个子串就有公共元素了,而且不能重复,如:babab,子串 bab 和 bab 重复,并且包含公共元素 b。可是答案明显这个是 OK 的。 这个语句还真是有点晕。​
1 回复 分享
发布于 2022-05-11 15:59
为什么只考虑长度为3的重复子串?
1 回复 分享
发布于 2022-05-21 14:02
绝了这个“计算”split后的列表长度,就算重复串“Abc”挨在一起,也是可以计算出重复,达到列表=3的预期!
1 回复 分享
发布于 2022-06-25 10:50
ord可以不需要吧,直接比较字符他也是自动去比较ASCII码的吧
1 回复 分享
发布于 2022-06-26 13:41
像是23aaaa45这样的包含公共字符的不能这样分割出来吧
1 回复 分享
发布于 2022-07-19 15:09
len(s.split(s[i:i+3])) >= 3这个方法不是很好,如果用例是 021Abc9Abc 这样就出问题了
1 回复 分享
发布于 2022-09-27 23:57 上海
为什么我只打印"NG",不打印"OK"
1 回复 分享
发布于 2022-10-26 15:38 陕西
试了一下,如果重复子串出现在两端,会在两端切出一个空的字符串,应该也会计算进去的
1 回复 分享
发布于 09-01 20:25 江苏
佩服
点赞 回复 分享
发布于 2021-12-27 15:52
第16行,为什么要减去3
点赞 回复 分享
发布于 2022-03-05 18:23

相关推荐

Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
353 53 评论
分享
牛客网
牛客企业服务