Dada una string binaria S , la tarea es imprimir todos los números decimales distintos que se pueden obtener generando todas las permutaciones de la string binaria .
Ejemplos:
Entrada: S = “110”
Salida: {3, 5, 6}
Explicación:
Todas las permutaciones posibles son {“110”, “101”, “110”, “101”, “011”, “011”}.
Los números decimales equivalentes de estas strings binarias son {6, 5, 6, 5, 3, 3} respectivamente.
Por lo tanto, los distintos números decimales obtenidos son {3, 5, 6}.Entrada: S = “1010”
Salida: {3, 5, 6, 9, 10, 12}
Enfoque: El problema se puede resolver usando un Conjunto . Siga los pasos a continuación para resolver el problema:
- Convierte la string dada en una lista de caracteres .
- Permute esta lista usando itertools de funciones de python integradas. permutaciones() .
- Inicializar una string vacía s.
- Recorra la lista de permutaciones y realice los siguientes pasos para cada permutación:
- Itere sobre los caracteres y agréguelos a la string.
- Convierta esta string binaria a decimal equivalente .
- Inserta el valor decimal actual obtenido en un conjunto .
- Finalmente, imprima los números presentes en el conjunto .
A continuación se muestra la implementación del enfoque anterior:
Python3
# Python3 program for the above approach from itertools import permutations # Function to convert binary # string to equivalent decimal def binToDec(n): num = n dec_value = 0 # Initializing base # value to 1, i.e 2 ^ 0 base1 = 1 len1 = len(num) for i in range(len1 - 1, -1, -1): if (num[i] == '1'): dec_value += base1 base1 = base1 * 2 # Return the resultant # decimal number return dec_value # Function to print all distinct # decimals represented by the # all permutations of the string def printDecimal(permute): # Set to store distinct # decimal representations allDecimals = set() # Iterate over all permutations for i in permute: # Initialize an empty string s = "" # Traverse the list for j in i: # Add each element # to the string s += j # Convert the current binary # representation to decimal result = binToDec(s) # Add the current decimal # value into the set allDecimals.add(result) # Print the distinct decimals print(allDecimals) # Utility function to print all # distinct decimal representations # of all permutations of string def totalPermutations(string): # Convert string to list lis = list(string) # Built in method to store all # the permutations of the list permutelist = permutations(lis) printDecimal(permutelist) # Given binary string binarystring = '1010' # Function call to print all distinct # decimal values represented by all # permutations of the given string totalPermutations(binarystring)
{3, 5, 6, 9, 10, 12}
Complejidad de Tiempo: O(N * N!)
Espacio Auxiliar: O(N * 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