游程编码给出错误的结果

问题描述 投票:0回答:1

我实现了一种运行长度编码,它迭代输入字符串,计算每个字符的连续出现次数。当字符发生变化时,它将计数后面的字符添加到编码字符串中。

def run_length_encode(string):
    encoded = ""
    count = 1
    for i in range(1, len(string)):
        if string[i] == string[i - 1]:
            count += 1
        else:
            encoded += str(count) + string[i - 1]
            count = 1
    return encoded


# Example usage:
original_string = "AAAABBBCCDAA"
encoded_string = run_length_encode(original_string)

print("Original string:", original_string)
print("Encoded string:", encoded_string)

问题是我实现的代码不计算最后一个字符。 上面的代码返回 4A3B2C1D 而不是 4A3B2C1D2A。 谢谢

python algorithm encoding
1个回答
0
投票

在返回编码之前,您需要在循环终止时附加计数和字符

encoded += str(count) + string[-1]

def run_length_encode(string):
    encoded = ""
    count = 1
    for i in range(1, len(string)):
        if string[i] == string[i - 1]:
            count += 1
        else:
            encoded += str(count) + string[i - 1]
            count = 1
    encoded += str(count) + string[-1]
    return encoded


# Example usage:
original_string = "AAAABBBCCDAA"
encoded_string = run_length_encode(original_string)

print("Original string:", original_string)
print("Encoded string:", encoded_string)
© www.soinside.com 2019 - 2024. All rights reserved.