对于特定的输出模式,如何在 python 中进行 运行 长度编码? (不使用 groupby 和输出列表)

How to do run length encoding in python for a specific pattern of output? (without using groupby and lists for output)

需要编写一个 python 函数来对给定字符串执行 运行 长度编码,并 returns 运行 长度编码字符串。

浏览了 Google 中 Stack Overflow 和其他网站中的各种帖子,以正确理解 Python 中的 运行 长度编码。尝试编码并获得了一些输出,但它与指定的输出不匹配。我在下面说明了我的代码和输出:

def encode(input_string):
    characters = []
    result = ''
    for character in input_string:
        # End loop if all characters were counted
        if set(characters) == set(input_string):
            break
        if character not in characters:
            characters.append(character)
            count = input_string.count(character)
            result += character
            if count > 1:
                result += str(count)
    return result

#Provide different values for message and test your program
encoded_message=encode("ABBBBCCCCCCCCAB")
print(encoded_message)

对于上面的字符串,我得到的输出为:A2B5C8

但预期的输出是:1A4B8C1A1B

如果有人告诉我在哪里更改代码以获得预期的输出格式,那就太好了。

您可以使用以下函数来获得所需的输出:

string = "ABBBBCCCCCCCCAB"

def encode(string):
    counter = 1
    result = ""
    previousLetter = string[0]
    if len(string)==1:
      return str(1) + string[0]
    for i in range(1,len(string),1):
        if not string[i] == previousLetter:
            result += str(counter) + string[i-1]
            previousLetter = string[i]
            counter = 1

        else:
            counter += 1
        if i == len(string)-1:
                result += str(counter) + string[i]

    return result

result = encode(string)
print(result)

输出:

1A4B8C1A1B