Codificación de longitud de ejecución en Python

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))
Producción

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)
Producción

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

Deja una respuesta

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