Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

กำหนดว่าตัวเลขสร้างลำดับบวกได้หรือไม่ใน JavaScript

Additive Numbers (ตัวเลขบวก)

Additive number คือสตริงตัวเลขที่หลักของมันสามารถสร้างลำดับบวกได้

ลำดับบวกที่ถูกต้องควรมีตัวเลขอย่างน้อยสามตัว ยกเว้นสองตัวแรก ตัวเลขแต่ละตัวในลำดับต้องเป็นผลรวมของสองตัวก่อนหน้า กำหนดสตริงที่มีเฉพาะตัวเลข '0'-'9' ให้เขียนฟังก์ชันเพื่อตรวจสอบว่ามันเป็น additive number หรือไม่

หมายเหตุ - ตัวเลขในลำดับบวกไม่สามารถมีศูนย์นำหน้าได้ ดังนั้นลำดับ 1, 2, 03 หรือ 1, 02, 3 จึงไม่ถูกต้อง

เช่น:

สตริง "199100199" เป็น additive number เพราะ ลำดับบวกคือ - 1, 99, 100, 199 -

1 + 99 = 100, 99 + 100 = 199

ตัวอย่าง

โค้ดสำหรับนี้จะเป็นดังนี้:

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));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้:

true