我实现了一种游程编码,它遍历输入字符串,计算每个字符连续出现的次数.当字符更改时,它会将计数后跟字符追加到编码的字符串中.

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

Python相关问答推荐

对Numpy函数进行载体化

由于NEP 50,向uint 8添加-256的代码是否会在numpy 2中失败?

仿制药的类型铸造

如何避免Chained when/then分配中的Mypy不兼容类型警告?

如何在Windows上用Python提取名称中带有逗号的文件?

将数据框架与导入的Excel文件一起使用

从numpy数组和参数创建收件箱

Pandas - groupby字符串字段并按时间范围 Select

' osmnx.shortest_track '返回有效源 node 和目标 node 的'无'

如何列举Pandigital Prime Set

迭代嵌套字典的值

如何从列表框中 Select 而不出错?

如果初始groupby找不到满足掩码条件的第一行,我如何更改groupby列,以找到它?

(Python/Pandas)基于列中非缺失值的子集DataFrame

为什么在FastAPI中创建与数据库的连接时需要使用生成器?

如何在FastAPI中替换Pydantic的constr,以便在BaseModel之外使用?'

合并相似列表

极柱内丢失类型信息""

如何提高Pandas DataFrame中随机列 Select 和分配的效率?

我如何为测试函数的参数化提供fixture 生成的数据?如果我可以的话,还有其他 Select 吗?