Additive Number LeetCode solution in JavaScript

1
const getNum = (str, i, j) => {
2
str = str.slice(i, j);
3
if (str[0] == "0" && str.length > 1) return -1000;
4
return Number(str);
5
};
6

7
var isAdditiveNumber = function (num) {
8
// i = 3 say and make theory and proof that
9
const len = num.length;
10
for (let b = 2; b < len; b++) {
11
for (let i = 0; i < b - 1; i++) {
12
for (let j = i + 1; j < b; j++) {
13
let v1 = getNum(num, 0, i + 1);
14
let v2 = getNum(num, i + 1, j + 1);
15
let v3 = getNum(num, j + 1, b + 1);
16
if (v1 + v2 == v3) {
17
// test hypothesis;
18
// from b start checking if string persist behaviour
19
let p = num.slice(0, b + 1);
20
while (p.length <= len) {
21
let sum = v2 + v3;
22
p += sum;
23
v2 = v3;
24
v3 = sum;
25
}
26
if (p.slice(0, len) == num) {
27
return true;
28
}
29
}
30
}
31
}
32
}
33
return false;
34
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0