Run-length encoding实现错误:未统计最后一组连续字符
修复游程编码中未统计最后一组字符的问题
你的代码核心逻辑没问题,但问题出在循环结束后没有处理最后一组连续字符——只有当遇到不同字符时,你才会把之前的计数和字符追加到编码结果里,而最后一组字符没有后续字符触发这个操作,所以被漏掉了。
修复方案
在函数的return语句之前,手动把最后一组的计数和对应的字符追加到编码字符串中。另外建议处理空字符串的边界情况,避免索引错误:
def run_length_encode(string): if not string: # 处理空字符串输入 return "" 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)
验证结果
运行修改后的代码,输入"AAAABBBCCDAA"会输出预期的4A3B2C1D2A,最后一组的2A被正确统计进去了。
内容的提问来源于stack exchange,提问作者user23342477
相关产品推荐
相关产品推荐

