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

Đếm số chữ số 1 từ 1 đến n trong JavaScript

Viết hàm nhận số nguyên dương num, đếm tổng số chữ số 1 xuất hiện trong tất cả số từ 1 đến num.

Ví dụ: 31 → 14 (xuất hiện ở 1,10,11,12,13,14,15,16,17,18,19,21,31).

Ví dụ

const num = 31;
const countOnes = (num = 1) => {
  if (num <= 0) return 0;
  let sum = 0;
  num += '';
  let helper = p => {
    let leftNum = 0, 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));

Kết quả

14