Python | Ordenar string usando el orden definido por otra string

Dadas dos strings (de letras minúsculas), un patrón y una string. La tarea es ordenar la string de acuerdo con el orden definido por el patrón y devolver el reverso. Se puede suponer que el patrón tiene todos los caracteres de la string y que todos los caracteres del patrón aparecen solo una vez.

Ejemplos:

Input : pat = "asbcklfdmegnot", str = "eksge" 
Output : str = "geeks"
(after sorting, str becomes "skeeg" and return its reverse)

Input : pat = "mgewqnasibkldjxruohypzcftv", str = "niocgd"
Output : str = "coding"

La idea es mantener primero un diccionario de acuerdo con el índice provisto en Pattern y luego pasar la función lambda (que usa la utilidad del diccionario) a la función de clasificación.
A continuación se muestra la implementación de la idea anterior.

# Python program to sort a string and return
# its reverse string according to pattern string
  
# This function will return the reverse of sorted string
# according to the pattern
  
def sortbyPattern(pat, str):
  
    priority = list(pat)
  
    # Create a dictionary to store priority of each character
    myDict = { priority[i] : i for i in range(len(priority))}
  
    str = list(str)
  
    # Pass lambda function as key in sort function
    str.sort( key = lambda ele : myDict[ele])
  
    # Reverse the string using reverse()
    str.reverse()
  
    new_str = ''.join(str)
    return new_str
  
  
if __name__=='__main__':
    pat = "asbcklfdmegnot"
    str =  "eksge"
    new_str = sortbyPattern(pat, str)
    print(new_str)

Producción:

geeks

Complejidad de tiempo: n*log(n) donde n es la longitud de la string

Publicación traducida automáticamente

Artículo escrito por chaudhary_19 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 *