该程序通过在Python中拆分数字字符串来计算我们可以生成值列表的方式的数量
假设我们有一个字符串s。s包含0到9之间的数字,我们还有另一个数字k。我们必须找到s可以表示为[1,k]中数字列表的不同方式的数量。如果答案很大,则返回结果mod10^9+7。
因此,如果输入像s=“3456”k=500,那么输出将是7,因为我们可以表示s,例如[3,4,5,6],[34,5,6],[3,4,56],[3,45,6],[34,56],[345,6],[3,456]
让我们看下面的实现以更好地理解-
示例
class Solution:
def solve(self, s, k):
m = 10 ** 9 + 7
N = len(s)
dp = [0] * (N + 1)
dp[N] = 1
for i in range(N − 1, −1, −1):
curr_val = 0
for j in range(i, N):
curr_val = curr_val * 10 + int(s[j])
if 1 <= curr_val <= k:
dp[i] = (dp[i] + dp[j + 1]) % m
else:
break
return dp[0]
ob = Solution()
s = "3456"
k = 500
print(ob.solve(s, k))输入值
"3456", 500
输出结果
7
热门推荐
10 退休的祝福语简短精辟
11 蛋糕祝福语简短闺蜜
12 牛年大气简短的祝福语
13 医美的祝福语大全简短
14 20春节祝福语大全简短
15 朋友出国读书祝福语简短
16 生日宴祝福语 简短独特
17 新年祝福语大全 简短情侣
18 爸爸生日的祝福语简短