You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何完成字符串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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 02:45:36