Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การพิจารณาว่าตัวเลขประกอบเป็นลำดับการบวกใน JavaScript . หรือไม่


การบวกเลข

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

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

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

ตัวอย่างเช่น −

สตริง "199100199" เป็นจำนวนบวกเพราะ ลำดับการบวกคือ − 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