Number of Ways to Separate Numbers LeetCode solution in Python
1# Runtime: 11887 ms (Top 6.00%) | Memory: 14.2 MB (Top 88.00%)2class Solution:3def numberOfCombinations(self, num: str) -> int:4if num[0] == "0":5return 06N = len(num)7MOD = int(10**9 + 7)8ways = (N + 1) * [0]9acc = list(ways)10for n in range(1, N + 1):11ways[n] = int(n == N or num[n] != "0")12for i in range(n + 1, N + 1):13if i < N and num[i] == "0":14ways[i] = 015continue16ways[i] = (17acc[i - n]18+ (19(w := ways[i - n])20and i >= 2 * n21and num[i - 2 * n : i - n] <= num[i - n : i]22and w23)24) % MOD25for i in range(n, N + 1):26a = (acc[i] + ways[i]) % MOD27acc[i] = a28return acc[N]