Imprima las primeras n permutaciones distintas de string usando itertools en Python

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

Deja una respuesta

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