如何完成字符串RLE编码函数编写?已有部分Python代码待完善
游程编码(RLE)函数实现与代码修正
问题分析
你提供的代码存在几个关键问题:
index被定义为字符串,无法使用append方法(字符串是Python不可变类型)- 逻辑错误:
s[i] in index是检查字符是否出现在之前所有字符中,而非判断是否与当前连续的字符一致,不符合RLE统计连续相同字符块的核心要求 - 返回值是元组,不符合题目要求的字符串输出格式
正确实现代码
def rleEncode(s: str) -> str: # 处理空字符串边界情况 if not s: return "" result = [] current_char = s[0] count = 1 # 从第二个字符开始遍历 for char in s[1:]: if char == current_char: count += 1 else: # 将当前块的编码加入结果列表 result.append(f"{current_char}{count}") current_char = char count = 1 # 处理最后一个字符块 result.append(f"{current_char}{count}") # 拼接所有块的编码为最终字符串 return "".join(result) # 测试示例 print(rleEncode('WWWWWWWBWWWWWWWBBW')) # 输出: W7B1W7B2W1
代码说明
- 先判断输入字符串是否为空,避免后续索引错误
- 使用
result列表存储每个连续块的编码,相比直接拼接字符串更高效(字符串不可变,每次拼接都会生成新对象) - 遍历过程中仅对比当前字符与上一个字符,确保统计的是连续相同字符的数量
- 遍历结束后必须处理最后一个字符块,避免遗漏
内容的提问来源于stack exchange,提问作者Bran
相关产品推荐
相关产品推荐

