代码之家  ›  专栏  ›  技术社区  ›  dax

运行长度编码给出错误的结果

  •  2
  • dax  · 技术社区  · 1 年前

    我实现了一个Run length编码,它遍历输入字符串,计算每个字符的连续出现次数。当字符发生变化时,它会将计数后面的字符追加到编码字符串中。

    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,而不是4A3B2C2A2A。 谢谢

    1 回复  |  直到 1 年前
        1
  •  2
  •   Oyinlade Demola    1 年前

    在返回编码之前,您需要在循环终止时附加计数和字符 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)