我实现了一种运行长度编码,它迭代输入字符串,计算每个字符的连续出现次数。当字符发生变化时,它将计数后面的字符添加到编码字符串中。
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。 谢谢
在返回编码之前,您需要在循环终止时附加计数和字符
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)