เราต้องเขียนฟังก์ชัน JavaScript ที่รับจำนวนเต็มบวก num ฟังก์ชันต้องนับจำนวนเลข 1 ทั้งหมดที่ปรากฏในจำนวนเต็มบวกทุกตัวจนถึง n (รวม n ถ้ามีเลข 1) แล้วคืนค่าจำนวนนั้น
ตัวอย่าง
ถ้าตัวเลขนำเข้าคือ:
const num = 31;
ผลลัพธ์ควรเป็น:
const output = 14;
เพราะเลข 1 ปรากฏใน:
1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 31
ตัวอย่างโค้ด
const num = 31;
const countOnes = (num = 1) => {
if(num <= 0) {
return 0;
}
let sum = 0;
num += '';
let helper = p => {
let leftNum = 0;
let rightNum = 0;
let di = num[p];
if(p > 0) {
leftNum = parseInt(num.slice(0, p));
}
if(p + 1 < num.length) {
rightNum = parseInt(num.slice(p + 1));
}
if(di > 1) {
sum += (leftNum + 1) * (10 ** (num.length - 1 - p));
} else if(di == 0) {
sum += (leftNum) * (10 ** (num.length - 1 - p));
} else {
sum += (leftNum) * (10 ** (num.length - 1 - p)) + rightNum + 1;
}
};
for(let i = 0; i < num.length; i++) {
helper(i);
}
return sum;
};
console.log(countOnes(num));
ผลลัพธ์
14