网上的一种解法:
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']