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
![Number of Digit One LeetCode Solution](https://i0.wp.com/totheinnovation.com/wp-content/uploads/2024/02/LeetCode-Problem-Solution.png?resize=200%2C200&ssl=1)
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
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;
}
};
Code language: HTML, XML (xml)
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;
}
}
Code language: PHP (php)
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);
};
Code language: JavaScript (javascript)
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
Code language: HTML, XML (xml)