leetcode-5375-恢复数组
题目描述:
解法:动态规划
class Solution: def numberOfArrays(self, s: str, k: int) -> int: n = len(s) dp = [0] * (n + 1) dp[0] = 1 mod = 10**9 +7 for i in range(1,n + 1): for j in range(i - 1 , -1, -1): if s[j] == "0":continue if int(s[j:i]) <= k: dp[i] += dp[j] else: if s[i-1] == "0" and dp[i] == 0:return 0 break return dp[-1] % mod
另;
class Solution: def numberOfArrays(self, s: str, k: int) -> int: n = len(s) f = [0]*(n+1) f[0] = 1 m = len(str(k)) MOD = 10**9+7 for i in range(1, n+1): for j in range(1, m+1): if i-j >= 0: if s[i-j] != '0' and int(s[i-j:i]) <= k: f[i] += f[i-j] f[i] %= MOD return f[n]