Problem Statement: Given an integer N , write program to count number of digits in N.
Examples:
Example 1: Input: N = 12345 Output: 5 Explanation: N has 5 digits Example 2: Input: N = 8394 Output: 4 Explanation: N has 4 digits
Disclaimer: Don’t jump directly to the solution, try it out yourself first.
Approach:
- Store the integer in a variable X and initialize a counter variable to count the number of digits.
- We know that in programming languages when we divide X by Y it will result in an integer (given both the variables are integers). For example, 133/10 will result in 13 similarly 1/10 will result in 0.
- Using a for loop and above observation keep on dividing X by 10 and increment the count in every iteration when X equals 0 terminate the loop and the count will have the number of digits in N.
Code:
C++ Code
#include<bits/stdc++.h>
using namespace std;
int count_digits( int n )
{
int x = n; int count =0;
while( x !=0 )
{
x = x / 10;
count++;
}
return count;
}
int main()
{
int n = 12345;
cout<< "Number of digits in "<<n<<" is "<<count_digits(n);
return 0;
}
Output: Number of digits in 12345 is 5
Time Complexity: O (n) where n is the number of digits in the given integer
Space Complexity: O(1)
Java Code
public class tUf {
static int count_digits(int n)
{
int x = n; int count =0;
while( x!=0 )
{
x = x / 10;
count++;
}
return count;
}
public static void main(String args[])
{
int n = 12345;
System.out.println("Number of digits in "+n+" is "+count_digits(n));
}
}
Output: Number of digits in 12345 is 5
Time Complexity: O (n) where n is the number of digits in the given integer
Space Complexity: O(1)
Python Code
def count_digits(n):
count=0
x=n
while( x != 0 ):
x//=10
count+=1
return count
n = 12345
print("Number of digits in ",n," is ",count_digits(n))
Output: Number of digits in 12345 is 5
Time Complexity: O (n) where n is the number of digits in the given integer
Space Complexity: O(1)
Solution 2 :
- Convert the integer into a string.
- Find the length of the string
Code:
C++ Code
#include<bits/stdc++.h>
using namespace std;
int count_digits( int n )
{
string x = to_string(n);
return x.length();
}
int main()
{
int n = 12345;
cout<< "Number of digits in "<<n<<" is "<<count_digits(n);
return 0;
}
Output: Number of digits in 12345 is 5
Time Complexity: O (1)
Space Complexity: O(1)
Java Code
import java.util.*;
public class tUf {
static int count_digits(int n) {
String n2 = Integer.toString(n);
return n2.length();
}
public static void main(String args[]) {
int n = 12345;
System.out.println("Number of digits in " + n + " is " + count_digits(n));
}
}
Output: Number of digits in 12345 is 5
Time Complexity: O (1)
Space Complexity: O(1)
Python Code
def count_digits(n):
x = str(n)
return len(x)
n = 12345
print("Number of digits in ", n, " is ", count_digits(n))
Output: Number of digits in 12345 is 5
Time Complexity: O (1)
Space Complexity: O(1)
Solution 3 :
Use logarithm base 10 to count the number of digits. As
The number of digits in an integer = the upper bound of log10(n).
Example :
n = 12345 log10(12345) = 4.091 Integral part of 4.091 is 4 and 4 + 1 = 5 which is also the number of digits in 12345
Code:
C++ Code
#include<bits/stdc++.h>
using namespace std;
int count_digits( int n )
{
int digits = floor(log10(n) + 1);
return digits;
}
int main()
{
int n = 12345;
cout<< "Number of digits in "<<n<<" is "<<count_digits(n);
return 0;
}
Output: Number of digits in 12345 is 5
Time Complexity: O (1)
Space Complexity: O(1)
Java Code
import java.util.*;
public class tUf {
static int count_digits(int n)
{
int digits = (int) Math.floor(Math.log10(n) + 1);
return digits;
}
public static void main(String args[])
{
int n = 12345;
System.out.println("Number of digits in "+n+" is "+count_digits(n));
}
}
Output: Number of digits in 12345 is 5
Time Complexity: O (1)
Space Complexity: O(1)
Python Code
import math
def count_digits(n):
digits = math.floor(math.log10(n) + 1)
return digits
n = 12345
print("Number of digits in ", n, " is ", count_digits(n))
Output: Number of digits in 12345 is 5
Time Complexity: O (1)
Space Complexity: O(1)
Special thanks to Harsh Verma for contributing to this article on takeUforward. If you also wish to share your knowledge with the takeUforward fam, please check out this article