python,求解字串的所有子串
阿新 • • 發佈:2019-02-07
網上的一種解法:
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']