Imprime todos los dígitos únicos presentes en la concatenación de todos los elementos de la array en el orden en que aparecen

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>
Producción: 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *