Count of repeating digits in a given Number

23 Apr, 2021
Given a number N, the task is to count the total number of repeating digits in the given number.
Examples:
Input: N = 99677  Output: 2Explanation:In the given number only 9 and 7 are repeating, hence the answer is 2.
Input: N = 12Output: 0Explanation:In the given number no digits are repeating, hence the answer is 0.
Naive Approach: The idea is to use two nested loops. In the first loop, traverse from the first digit of the number to the last, one by one. Then for each digit in the first loop, run a second loop and search if this digit is present anywhere else as well in the number. If yes, then increase the required count by 1. In the end, print the calculated count.
Time Complexity: O(N2)Auxiliary Space: O(1)
Efficient Approach: The idea is to use Hashing to store the frequency of the digits and then count the digits with a frequency equal to more than 1. Follow the steps below to solve the problem:
Create an array of size 10 to store the count of digits 0 – 9. Initially store each index as 0.
Now for each digit of number N, increment the count of that index in the array.
Traverse the array and count the indices that have value more than 1.
In the end, print this count.
Below is the implementation of the above approach:
C++
Java
Python3
C#
Javascript
// C++ program for the above approach#include <bits/stdc++.h>using namespace std; // Function that returns the count of// repeating digits of the given numberint countRepeatingDigits(int N){    // Initialize a variable to store    // count of Repeating digits    int res = 0;     // Initialize cnt array to    // store digit count     int cnt[10] = { 0 };     // Iterate through the digits of N    while (N > 0) {         // Retrieve the last digit of N        int rem = N % 10;         // Increase the count of digit        cnt[rem]++;         // Remove the last digit of N        N = N / 10;    }     // Iterate through the cnt array    for (int i = 0; i < 10; i++) {         // If frequency of digit        // is greater than 1        if (cnt[i] > 1) {             // Increment the count            // of Repeating digits            res++;        }    }     // Return count of repeating digit    return res;} // Driver Codeint main(){    // Given array arr[]    int N = 12;     // Function Call    cout << countRepeatingDigits(N);    return 0;}
// Java program for the above approachclass GFG{   // Function that returns the count of// repeating digits of the given numberstatic int countRepeatingDigits(int N){    // Initialize a variable to store    // count of Repeating digits    int res = 0;      // Initialize cnt array to    // store digit count      int cnt[] = new int[10];      // Iterate through the digits of N    while (N > 0)    {          // Retrieve the last digit of N        int rem = N % 10;          // Increase the count of digit        cnt[rem]++;          // Remove the last digit of N        N = N / 10;    }      // Iterate through the cnt array    for (int i = 0; i < 10; i++)    {          // If frequency of digit        // is greater than 1        if (cnt[i] > 1)        {              // Increment the count            // of Repeating digits            res++;        }    }      // Return count of repeating digit    return res;}  // Driver Codepublic static void main(String[] args){    // Given array arr[]    int N = 12;      // Function Call    System.out.println(countRepeatingDigits(N));}} // This code is contributed by Ritik Bansal
# Python3 program for the above approach # Function that returns the count of# repeating digits of the given numberdef countRepeatingDigits(N):         # Initialize a variable to store    # count of Repeating digits    res = 0     # Initialize cnt array to    # store digit count    cnt = [0] * 10     # Iterate through the digits of N    while (N > 0):         # Retrieve the last digit of N        rem = N % 10         # Increase the count of digit        cnt[rem] += 1         # Remove the last digit of N        N = N // 10         # Iterate through the cnt array    for i in range(10):         # If frequency of digit        # is greater than 1        if (cnt[i] > 1):             # Increment the count            # of Repeating digits            res += 1             # Return count of repeating digit    return res # Driver Code # Given array arr[]N = 12 # Function callprint(countRepeatingDigits(N)) # This code is contributed by sanjoy_62
// C# program for the above approachusing System;class GFG{ // Function that returns the count of// repeating digits of the given numberstatic int countRepeatingDigits(int N){    // Initialize a variable to store    // count of Repeating digits    int res = 0;     // Initialize cnt array to    // store digit count    int []cnt = new int[10];     // Iterate through the digits of N    while (N > 0)    {         // Retrieve the last digit of N        int rem = N % 10;         // Increase the count of digit        cnt[rem]++;         // Remove the last digit of N        N = N / 10;    }     // Iterate through the cnt array    for (int i = 0; i < 10; i++)    {         // If frequency of digit        // is greater than 1        if (cnt[i] > 1)        {             // Increment the count            // of Repeating digits            res++;        }    }     // Return count of repeating digit    return res;} // Driver Codepublic static void Main(String[] args){    // Given array []arr    int N = 12;     // Function Call    Console.WriteLine(countRepeatingDigits(N));}} // This code is contributed by Rajput-Ji
<script> // Javascript program for the above approach // Function that returns the count of// repeating digits of the given numberfunction countRepeatingDigits(N){     // Initialize a variable to store    // count of Repeating digits    var res = 0;     // Initialize cnt array to    // store digit count     var cnt = Array(10).fill(0);     // Iterate through the digits of N    while (N > 0) {         // Retrieve the last digit of N        var rem = N % 10;         // Increase the count of digit        cnt[rem]++;         // Remove the last digit of N        N = N / 10;    }     // Iterate through the cnt array    for (var i = 0; i < 10; i++) {         // If frequency of digit        // is greater than 1        if (cnt[i] > 1) {             // Increment the count            // of Repeating digits            res++;        }    }     // Return count of repeating digit    return res;} // Driver Code// Given array arr[]var N = 12; // Function Calldocument.write( countRepeatingDigits(N)); // This code is contributed by rrrtnx.</script>
0
Time Complexity: O(N)Auxiliary Space: O(1)
Convert integer to string.
Use the Counter function to count the frequency of characters.
If the frequency is greater than 1 increment the count
Below is the implementation:
Python3
# Python3 program for the above approachfrom collections import Counter # Function that returns the count of# repeating digits of the given numberdef countRepeatingDigits(N):       # converting integer to string    number = str(N)         # initializing count = 0    count = 0    frequency = Counter(number)         # Traversing frequency    for i in frequency:        if(frequency[i] > 1):                       # increase the count            count = count+1    return count # Driver Code  # Given array arr[]N = 1232145 # Function callprint(countRepeatingDigits(N)) # This code is contributed by vikkycirus
2
bansal_rtk_
Rajput-Ji
sanjoy_62
vikkycirus
rrrtnx
number-digits
Mathematical
School Programming
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Merge two sorted arrays
Operators in C / C++
Prime Numbers
Minimum number of jumps to reach end
Find minimum number of coins that make a given value
Python Dictionary
Reverse a string in Java
Arrays in C/C++
Introduction To PYTHON
Interfaces in Java