python,求解字符串的所有子串

网上的一种解法:

def cut(s: str):
    results = []
    num = 0
    # x + 1 表示子字符串长度
    for x in range(len(s)):
        # i 表示偏移量
        for i in range(len(s) - x):
            results.append(s[i:i + x + 1])
    return results

执行结果:
以“1234”为例,结果为–>[‘1’, ‘2’, ‘3’, ‘4’, ‘12’, ‘23’, ‘34’, ‘123’, ‘234’, ‘1234’]
分析
子字符串中并没有“24”,“124”,说明分的效果并不是这么好
改进之后:

def cut2(s: str,n):
    results = []
    num = 0

    # x + 1 表示子字符串长度
    for x in range(len(s)):
        # i 表示偏移量
        for i in range(len(s) - x):
            if x == 0:
                results.append(s[i:i + x + 1])
            elif x < 2:
                for j in range(len(s) - x - i):
                    results.append(s[i] + s[j + x + i])
            else:
                for j in range(len(s) - x - i):
                    results.append(s[i:i+x] + s[j + x + i])
    #判断子字符串中能被n整除的个数
    for y in results:
        if int(y) % int(n) == 0:
           num = num+1



    return num

这里添加了,判断了子字符串能否被n整除
执行结果:
还是输入字符串“1234”,所有子字符串为:

['1', '2', '3', '4', '12', '13', '14', '23', '24', '34', '123', '124', '234', '1234']
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值