การบวกเลข
เลขบวกคือสตริงตัวเลขที่ตัวเลขสามารถสร้างลำดับการบวกได้
ลำดับการเติมที่ถูกต้องควรมีตัวเลขอย่างน้อยสามตัว ยกเว้นตัวเลขสองตัวแรก แต่ละหมายเลขในลำดับต่อมาจะต้องเป็นผลรวมของสองตัวก่อนหน้า ให้สตริงที่มีเฉพาะตัวเลข '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