Dada una array arr[] que consta de N enteros, la tarea es imprimir todos los dígitos únicos del número formado al concatenar todos los elementos de la array en el orden en que aparecen después de excluir los ceros iniciales.
Ejemplos:
Entrada: arr[] = {122, 474, 612, 932}
Salida: 7 6 9 3
Explicación:
El número formado por la concatenación de elementos de array es » 122474612932 «.
Los dígitos únicos presentes en el número son 7 6 9 3 (en el orden en que aparecen).Entrada: arr[]={0, 912, 231, 14}
Salida: 9 3 4
Explicación:
el número formado por la concatenación de elementos de array es » 091223114″ .
El número final obtenido después de eliminar los ceros iniciales es «91223114».
Los dígitos únicos presentes en el número son 9 3 4 (en el orden en que aparecen).
Enfoque : la idea es convertir todos los elementos de la array en sus strings equivalentes y concatenar esas strings y usar Hashing para encontrar dígitos únicos presentes en el número obtenido.
Siga los pasos a continuación para resolver el problema.
- Recorra la array arr [] y convierta cada elemento de la array en su string equivalente y concatene todas las strings en una variable, digamos S .
- Convierta la string S en un entero equivalente (digamos N ) usando el encasillado (eliminando los 0 iniciales)
- Inicialice una tabla hash de tamaño 10 para almacenar la frecuencia de los dígitos [0, 9] .
- Inicializar una lista vacía, digamos lis
- Ahora, para cada dígito del número N , incremente la cuenta de ese índice en la tabla hash .
- Para cada dígito del número N , realice las siguientes operaciones:
- Comprobar si es visitado o no
- Si el número no se visita y si su frecuencia es 1, agregue este dígito a lis . Marca el valor de ese índice como visitado.
- Invierta la lista de listas e imprímala
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 long unique elements void printUnique(vector<long long> lis) { // Reverse the list reverse(lis.begin(),lis.end()); // Traverse the list for(long long i:lis) cout << i << " "; } // Function which check for // all unique digits void checkUnique(string st) { // Stores the final number vector<long long> lis; // Stores the count of // unique digits long long res = 0; // Converting string to long longer // to remove leading zeros long long N = stoll(st); // Stores count of digits vector<long long> cnt(10, 0), cnt1(10, 0); // Iterate over the digits of N while (N > 0) { // Retrieve the last digit of N long long rem = N % 10; // Increase the count // of the last digit cnt[rem] += 1; // Remove the last digit of N N = N /10; } // Converting string to long longer again N = stoll(st); // Iterate over the digits of N while (N > 0) { // Retrieve the last digit of N long long rem = N % 10; // If the value of this digit // is not visited if(cnt1[rem] == 0) { // If its frequency is 1 (unique) if(cnt[rem] == 1) lis.push_back(rem); } // Mark the digit visited cnt1[rem] = 1; // Remove the last digit of N N = N /10; } // Passing this list to print long // the reversed list printUnique(lis); } // Function to concatenate array elements void combineArray(vector<long long> lis) { // Stores the concatenated number string st = ""; // Traverse the array for (long long el : lis) { // Convert to equivalent string string ee = to_string(el); // Concatenate the string st = st + ee; } // Passing string to checkUnique function checkUnique(st); } // Driver Code int main() { vector<long long> arr = {122, 474, 612, 932}; // Function call to prlong long unique // digits present in the // concatenation of array elements combineArray(arr); return 0; } // This code is contributed by mohit kumar 29.
Python3
# Python implementation # of above approach # Function to print unique elements def printUnique(lis): # Reverse the list lis.reverse() # Traverse the list for i in lis: print(i, end =" ") # Function which check for # all unique digits def checkUnique(string): # Stores the final number lis = [] # Stores the count of # unique digits res = 0 # Converting string to integer # to remove leading zeros N = int(string) # Stores count of digits cnt = [0] * 10 # Iterate over the digits of N while (N > 0): # Retrieve the last digit of N rem = N % 10 # Increase the count # of the last digit cnt[rem] += 1 # Remove the last digit of N N = N // 10 # Converting string to integer again N = int(string) # Iterate over the digits of N while (N > 0): # Retrieve the last digit of N rem = N % 10 # If the value of this digit # is not visited if(cnt[rem] != 'visited'): # If its frequency is 1 (unique) if(cnt[rem] == 1): lis.append(rem) # Mark the digit visited cnt[rem] = 'visited' # Remove the last digit of N N = N // 10 # Passing this list to print # the reversed list printUnique(lis) # Function to concatenate array elements def combineArray(lis): # Stores the concatenated number string = "" # Traverse the array for el in lis: # Convert to equivalent string el = str(el) # Concatenate the string string = string + el # Passing string to checkUnique function checkUnique(string) # Driver Code # Input arr = [122, 474, 612, 932] # Function call to print unique # digits present in the # concatenation of array elements combineArray(arr)
Javascript
<script> // Javascript program for the above approach // Function to print long unique elements function printUnique(lis) { // Reverse the list lis.reverse(); // Traverse the list for(var i=0; i<lis.length; i++) { document.write(lis[i]+" ") } } // Function which check for // all unique digits function checkUnique(st) { // Stores the final number var lis = []; // Stores the count of // unique digits var res = 0; // Converting string to long longer // to remove leading zeros var N = parseInt(st); // Stores count of digits var cnt = Array(10).fill(0); var cnt1 = Array(10).fill(0); // Iterate over the digits of N while (N > 0) { // Retrieve the last digit of N var rem = N % 10; // Increase the count // of the last digit cnt[rem] += 1; // Remove the last digit of N N = parseInt(N /10); } // Converting string to long longer again N = parseInt(st); // Iterate over the digits of N while (N > 0) { // Retrieve the last digit of N var rem = N % 10; // If the value of this digit // is not visited if(cnt1[rem] == 0) { // If its frequency is 1 (unique) if(cnt[rem] == 1) lis.push(rem); } // Mark the digit visited cnt1[rem] = 1; // Remove the last digit of N N = parseInt(N /10); } // Passing this list to print long // the reversed list printUnique(lis); } // Function to concatenate array elements function combineArray(lis) { // Stores the concatenated number var st = ""; // Traverse the array for(var i =0; i< lis.length; i++) { // Convert to equivalent string var ee = (lis[i].toString()); // Concatenate the string st = st + ee; } // Passing string to checkUnique function checkUnique(st); } // Driver Code var arr = [122, 474, 612, 932]; // Function call to print long unique // digits present in the // concatenation of array elements combineArray(arr); </script>
7 6 9 3
Complejidad temporal : O(N)
Espacio auxiliar: O(N)
Publicación traducida automáticamente
Artículo escrito por vikkycirus y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA