Dada una string de entrada, escriba una función que devuelva la string codificada de longitud de ejecución para la string de entrada. Por ejemplo, si la string de entrada es ‘wwwwaaadexxxxxx’, la función debería devolver ‘w4a3d1e1x6’.
Ejemplos:
Input : str = 'wwwwaaadexxxxxx' Output : 'w4a3d1e1x6'
Este problema tiene una solución existente, consulte el enlace de codificación de longitud de ejecución . Aquí resolveremos este problema rápidamente en python usando OrderedDict . El enfoque es muy simple, primero creamos un diccionario ordenado que contiene los caracteres de la string de entrada como clave y 0 como su valor predeterminado, ahora ejecutamos un bucle para contar la frecuencia de cada carácter y lo asignaremos a su clave correspondiente.
Implementación:
Python3
# Python code for run length encoding from collections import OrderedDict def runLengthEncoding(input): # Generate ordered dictionary of all lower # case alphabets, its output will be # dict = {'w':0, 'a':0, 'd':0, 'e':0, 'x':0} dict=OrderedDict.fromkeys(input, 0) # Now iterate through input string to calculate # frequency of each character, its output will be # dict = {'w':4,'a':3,'d':1,'e':1,'x':6} for ch in input: dict[ch] += 1 # now iterate through dictionary to make # output string from (key,value) pairs output = '' for key,value in dict.items(): output = output + key + str(value) return output # Driver function if __name__ == "__main__": input="wwwwaaadexxxxxx" print (runLengthEncoding(input))
w4a3d1e1x6
Otro código:
Python3
def encode(message): encoded_message = "" i = 0 while (i <= len(message)-1): count = 1 ch = message[i] j = i while (j < len(message)-1): if (message[j] == message[j+1]): count = count+1 j = j+1 else: break encoded_message=encoded_message+str(count)+ch i = j+1 return encoded_message #Provide different values for message and test your program encoded_message=encode("ABBBBCCCCCCCCAB") print(encoded_message)
1A4B8C1A1B
Este artículo es una contribución de Shashank Mishra (Gullu) . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA