1. 程式人生 > >python,求解字串的所有子串

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']