Skip to content

Commit 4ccc737

Browse files
authored
Create 1977-number-of-ways-to-separate-numbers.js
1 parent aaf1936 commit 4ccc737

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
function numberOfCombinations( num) {
2+
let dp = Array(3501).fill(0), dpp=Array(3501).fill(0), pf=Array(3501).fill(0), n = num.length, mod = 1000000007;
3+
for (let l = 1; l <= n; ++l) {
4+
dpp[0] = 1;
5+
for (let i = n; i - l > 0; --i)
6+
pf[i - 1] = num[i - 1 - l] == num[i - 1] ? pf[i] + 1 : 0;
7+
for (let i = 0; i < n; ++i) {
8+
dp[i + 1] = dpp[i + 1];
9+
if (l <= i + 1 && num[i + 1 - l] != '0') {
10+
if (i + 1 - 2 * l >= 0 && (pf[i + 1 - l] >= l || num[i + 1 - l + pf[i + 1 - l]] > num[i + 1 - 2 * l + pf[i + 1 - l]]))
11+
dp[i + 1] = (dp[i + 1] + dp[i + 1 - l]) % mod;
12+
else
13+
dp[i + 1] = (dp[i + 1] + dpp[i + 1 - l]) % mod;
14+
}
15+
}
16+
let tmp = dpp
17+
dpp = dp
18+
dp = tmp
19+
}
20+
return dpp[n];
21+
}

0 commit comments

Comments
 (0)