栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python的split()方法妙用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python的split()方法妙用

例如ACM模式下一道密码合格验证的算法题:
题目:
密码要求:

1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)
数据范围:输入的字符串长度满足 1 le n le 100 1≤n≤100
输入描述:
一组字符串。
输出描述:
如果符合要求输出:OK,否则输出NG

示例:

输入
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
输出
OK
NG
NG
OK

代码:

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

分析:s.split(s[i:i+3])用的较好。
021Abc9Abc1,该字符串经s.split(s[i:i+3])处理后为[‘021’, ‘9’, ‘1’],因此存在三个字符以上的重复子串。
注意:同理,输入021AbcAbc1,[‘021’, ‘’, ‘1’],也可检查出三个字符以上的重复子串。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/934777.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号