Number of Ways to Separate Numbers LeetCode solution in Python

1
# Runtime: 11887 ms (Top 6.00%) | Memory: 14.2 MB (Top 88.00%)
2
class Solution:
3
def numberOfCombinations(self, num: str) -> int:
4
if num[0] == "0":
5
return 0
6
N = len(num)
7
MOD = int(10**9 + 7)
8
ways = (N + 1) * [0]
9
acc = list(ways)
10
for n in range(1, N + 1):
11
ways[n] = int(n == N or num[n] != "0")
12
for i in range(n + 1, N + 1):
13
if i < N and num[i] == "0":
14
ways[i] = 0
15
continue
16
ways[i] = (
17
acc[i - n]
18
+ (
19
(w := ways[i - n])
20
and i >= 2 * n
21
and num[i - 2 * n : i - n] <= num[i - n : i]
22
and w
23
)
24
) % MOD
25
for i in range(n, N + 1):
26
a = (acc[i] + ways[i]) % MOD
27
acc[i] = a
28
return acc[N]

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0