Dada una string con caracteres duplicados permitidos, imprima las primeras n permutaciones de la string dada de modo que no se repita ninguna permutación.
Ejemplos:
Input : string = "abcab", n = 10 Output : aabbc aabcb aacbb ababc abacb abbac abbca abcab abcba acabb Input : string = "okok", n = 4 Output : kkoo koko kook okko
Enfoque:
Python proporciona un método incorporado para encontrar las permutaciones de cualquier secuencia dada que esté presente en el itertools
paquete. Pero este método no proporciona permutaciones únicas. Por lo tanto, para garantizar que no se repita ninguna permutación, usamos un conjunto y seguimos las siguientes condiciones:
- Si la permutación no está presente en el conjunto, imprímala e insértela en el conjunto. Incrementa el conteo del número de permutaciones únicas.
- De lo contrario, pase a la siguiente permutación.
A continuación se muestra la implementación del enfoque anterior:
# Python3 program to print first n unique # permutations of the string using itertools from itertools import permutations # Function to print first n unique # permutation using itertools def nPermute(string, n): # Convert the string to list and sort # the characters in alphabetical order strList = sorted(list(string)) # Create an iterator permList = permutations(strList) # Keep iterating until we # reach nth unique permutation i = 0 permSet = set() tempStr = '' while i < n: tempStr = ''.join(permList.__next__()) # Insert the string in the set # if it is not already included # and print it out. if tempStr not in permSet: permSet.add(tempStr) print(tempStr) i += 1 # Driver code if __name__ == "__main__": string = "ababc" n = 10 nPermute(string, n)
Producción:
aabbc aabcb aacbb ababc abacb abbac abbca abcab abcba acabb
Publicación traducida automáticamente
Artículo escrito por rituraj_jain y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA