Last updated on October 9th, 2024 at 06:10 pm

Here, We see ** Number of Digit One LeetCode Solution**. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.

*List of all LeetCode Solution*

*List of all LeetCode Solution*

## Topics

Math

## Level of Question

Hard

**Number of Digit One LeetCode Solution**

## Table of Contents

**Problem Statement**

Given an integer `n`

, count *the total number of digit *`1`

* appearing in all non-negative integers less than or equal to* `n`

.

**Example 1:****Input:** n = 13 **Output:** 6

**Example 2:****Input:** n = 0 **Output:** 0

**1. Number of Digit One Solution C++**

class Solution { public: int countDigitOne(int n) { int ret = 0; for(long long int i = 1; i <= n; i*= (long long int)10){ int a = n / i; int b = n % i; int x = a % 10; if(x ==1){ ret += (a / 10) * i + (b + 1); } else if(x == 0){ ret += (a / 10) * i; } else { ret += (a / 10 + 1) *i; } } return ret; } };

**2. Number of Digit One Solution Java**

class Solution { public int countDigitOne(int n) { int ans = 0; for (long pow10 = 1; pow10 <= n; pow10 *= 10) { final long divisor = pow10 * 10; final int quotient = (int) (n / divisor); final int remainder = (int) (n % divisor); if (quotient > 0) ans += quotient * pow10; if (remainder >= pow10) ans += Math.min(remainder - pow10 + 1, pow10); } return ans; } }

**3. Number of Digit One Solution JavaScript**

var countDigitOne = function(n) { if(n <= 0) return 0; if(n < 10) return 1; var base = Math.pow(10, n.toString().length - 1); var answer = parseInt(n / base); return countDigitOne(base - 1) * answer + (answer === 1 ? (n - base + 1) : base) + countDigitOne(n % base); };

**4. Number of Digit One Solution Python**

class Solution(object): def countDigitOne(self, n): ones, m = 0, 1 while m <= n: ones += (n/m + 8) / 10 * m + (n/m % 10 == 1) * (n%m + 1) m *= 10 return ones