Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Xác định chuỗi số có tạo thành dãy cộng dồn (additive sequence) trong JavaScript

Số cộng dồn (additive number): chuỗi số có thể tách thành dãy ít nhất 3 số, từ số thứ 3 trở đi mỗi số bằng tổng hai số trước. Không cho phép số dẫn đầu bằng 0 (trừ số 0).

Ví dụ

const str = "199100199"; const isAdditiveNumber = (numStr) => {    if(numStr.length < 3) return false;    let str = "";    let seen = true;    for(let i = numStr.length − 1; i > 1; i−−){       str = `${numStr[i]}${str}`;       if(numStr[i] === "0") continue;       let s = str;       let s2 = numStr[i − 1]       for(let j = i − 2; j >= 0; j−−){          if(`${s2}`.startsWith("0") && s2.length > 1){             s2 = `${numStr[j]}${s2}` seen = false;          } else if(parseInt(s) >= parseInt(s2)){             let diff = s − s2;             if(numStr.slice(0, j + 1).endsWith(diff)){                s = s2;                s2 = diff;                let ind = Math.floor(Math.log10(diff));                ind = ind < 0 ? 0 : ind                j −= ind;                seen = true;             }else {                s2 = `${numStr[j]}${s2}`                seen = false;             }          }else{             seen = false;             break;          }       }       if(seen) return seen;    };    return seen; }; console.log(isAdditiveNumber(str));

Kết quả

true