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