Dado un número entero N , la tarea es imprimir todos los dígitos repetidos presentes en N en orden ordenado.
Ejemplos:
Entrada: N = 45244336543
Salida: 3 4 5
Explicación: Los dígitos duplicados son 3 4 5Entrada: N = 987065467809
Salida: 0 6 7 8 9
Planteamiento: La idea es usar Hashing para almacenar la frecuencia de dígitos de N e imprimir aquellos dígitos cuya frecuencia exceda 1.
- Inicialice un HashMap , para almacenar la frecuencia de los dígitos 0-9 .
- Convierte el entero a su string equivalente .
- Repita los caracteres de la string y, para cada carácter, realice los siguientes pasos:
- Convierta el carácter actual en un número entero usando el encasillado
- Incrementa el conteo de ese dígito en un HashMap .
- Recorra el HashMap e imprima los dígitos cuyo conteo exceda 1.
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 to print repeating // digits present in the number N void printDup(string N) { // Stores the count of // unique digits int res = 0; // Map to store frequency // of each digit int cnt[10]; // Set count of all digits to 0 for (int i = 0; i < 10; i++) cnt[i] = 0; // Traversing the string for (int i = 0; i < N.size(); i++) { // Convert the character // to equivalent integer int digit = (N[i] - '0'); // Increase the count of digit cnt[digit] += 1; } // Traverse the Map for (int i = 0; i < 10; i++) { // If frequency // of digit exceeds 1 if (cnt[i] > 1) cout << i << " "; } cout << endl; } // Driver Code int main() { string N = "45244336543"; // Function call to print // repeating digits in N printDup(N); return 0; } // This code is contributed by Kingash.
Java
// Java program for the above approach import java.io.*; import java.util.*; class GFG { // Function to print repeating // digits present in the number N static void printDup(String N) { // Stores the count of // unique digits int res = 0; // Map to store frequency // of each digit int cnt[] = new int[10]; // Traversing the string for (int i = 0; i < N.length(); i++) { // Convert the character // to equivalent integer int digit = (N.charAt(i) - '0'); // Increase the count of digit cnt[digit] += 1; } // Traverse the Map for (int i = 0; i < 10; i++) { // If frequency // of digit exceeds 1 if (cnt[i] > 1) System.out.print(i + " "); } System.out.println(); } // Driver Code public static void main(String[] args) { String N = "45244336543"; // Function call to print // repeating digits in N printDup(N); } } // This code is contributed by Kingash.
Python3
# Python implementation # of the above approach # Function to print repeating # digits present in the number N def printDup(N): # Stores the count of # unique digits res = 0 # Set count of all digits to 0 cnt = [0] * 10 # Convert integer to # equivalent string string = str(N) # Traversing the string for i in string: # Convert the character # to equivalent integer digit = int(i) # Increase the count of digit cnt[digit] += 1 # Traverse the Map for i in range(10): # If frequency # of digit is 1 if (cnt[i] > 1): # If count exceeds 1 print(i, end=" ") # Driver Code N = 45244336543 # Function call to print # repeating digits in N printDup(N)
C#
// C# program to implement // the above approach using System; class GFG { // Function to print repeating // digits present in the number N static void printDup(string N) { // Stores the count of // unique digits // Map to store frequency // of each digit int[] cnt = new int[10]; // Traversing the string for (int i = 0; i < N.Length; i++) { // Convert the character // to equivalent integer int digit = (N[i] - '0'); // Increase the count of digit cnt[digit] += 1; } // Traverse the Map for (int i = 0; i < 10; i++) { // If frequency // of digit exceeds 1 if (cnt[i] > 1) Console.Write(i + " "); } Console.WriteLine(); } // Driver code public static void Main() { string N = "45244336543"; // Function call to print // repeating digits in N printDup(N); } } // This code is contributed by code_hunt.
Javascript
<script> // Javascript program for the above approach // Function to print repeating // digits present in the number N function printDup(N) { // Stores the count of // unique digits var res = 0; // Map to store frequency // of each digit var cnt = Array(10); // Set count of all digits to 0 for (var i = 0; i < 10; i++) cnt[i] = 0; // Traversing the string for (var i = 0; i < N.length; i++) { // Convert the character // to equivalent integer var digit = (N[i] - '0'); // Increase the count of digit cnt[digit] += 1; } // Traverse the Map for (var i = 0; i < 10; i++) { // If frequency // of digit exceeds 1 if (cnt[i] > 1) document.write( i + " "); } document.write("<br>"); } // Driver Code var N = "45244336543"; // Function call to print // repeating digits in N printDup(N); </script>
3 4 5
Complejidad de tiempo: O(log 10 N)
Espacio auxiliar: O(1)
Enfoque 2: Usando count().
Usando count() intentamos encontrar el carácter cuya ocurrencia es más de una vez, almacenarlo en una estructura de datos y ordenarlo.
Python3
# Python implementation # of the above approach #initializing number N = 45244336543 x=[] s=str(N) for i in s: if(s.count(i)>1 and i not in x): x.append(i) x.sort() print(' '.join(x))
3 4 5
Publicación traducida automáticamente
Artículo escrito por vikkycirus y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA