Dado un número N , la tarea es contar el número total de dígitos repetidos en el número dado.
Ejemplos:
Entrada: N = 99677
Salida: 2
Explicación:
En el número dado solo se repiten 9 y 7, por lo que la respuesta es 2.Entrada: N = 12
Salida: 0
Explicación:
En el número dado no se repiten dígitos, por lo que la respuesta es 0.
Enfoque ingenuo: la idea es utilizar dos bucles anidados . En el primer ciclo, recorra desde el primer dígito del número hasta el último, uno por uno. Luego, para cada dígito en el primer ciclo, ejecute un segundo ciclo y busque si este dígito también está presente en algún otro lugar del número. En caso afirmativo, aumente el recuento requerido en 1. Al final, imprima el recuento calculado.
Complejidad de Tiempo: O(N 2 )
Espacio Auxiliar: O(1)
Enfoque eficiente: la idea es usar Hashing para almacenar la frecuencia de los dígitos y luego contar los dígitos con una frecuencia igual a más de 1. Siga los pasos a continuación para resolver el problema:
- Cree una array de tamaño 10 para almacenar el recuento de dígitos del 0 al 9. Inicialmente almacene cada índice como 0.
- Ahora, para cada dígito del número N, incremente la cuenta de ese índice en la array.
- Recorra la array y cuente los índices que tienen un valor superior a 1.
- Al final, imprima este conteo.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function that returns the count of // repeating digits of the given number 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[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 Code int main() { // Given array arr[] int N = 12; // Function Call cout << countRepeatingDigits(N); return 0; }
Java
// Java program for the above approach class GFG{ // Function that returns the count of // repeating digits of the given number static 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 Code public 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
# Python3 program for the above approach # Function that returns the count of # repeating digits of the given number def 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 call print(countRepeatingDigits(N)) # This code is contributed by sanjoy_62
C#
// C# program for the above approach using System; class GFG{ // Function that returns the count of // repeating digits of the given number static 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 Code public static void Main(String[] args) { // Given array []arr int N = 12; // Function Call Console.WriteLine(countRepeatingDigits(N)); } } // This code is contributed by Rajput-Ji
Javascript
<script> // Javascript program for the above approach // Function that returns the count of // repeating digits of the given number function 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 Call document.write( countRepeatingDigits(N)); // This code is contributed by rrrtnx. </script>
0
Complejidad temporal: O(N)
Espacio auxiliar: O(1)
Método n.º 2: Uso de las funciones integradas de python:
- Convertir entero a string.
- Utilice la función Contador para contar la frecuencia de los caracteres.
- Si la frecuencia es mayor que 1 incrementa el conteo
A continuación se muestra la implementación:
Python3
# Python3 program for the above approach from collections import Counter # Function that returns the count of # repeating digits of the given number def 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 call print(countRepeatingDigits(N)) # This code is contributed by vikkycirus
2