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

如何处理字符串aabbbccdda得到输出结果a2b3c2d2a1?

实现方法

你这个需求属于典型的*连续字符游程编码(Run-Length Encoding, RLE)*场景,核心逻辑是统计连续出现的相同字符的次数,再按「字符+次数」的格式拼接即可。

实现步骤

  • 处理边界情况:如果输入字符串为空,直接返回空结果
  • 初始化统计变量:记录当前正在统计的字符,以及该字符的连续出现次数
  • 遍历字符串从第二个字符开始的所有字符:
    • 若当前字符和正在统计的字符相同,计数加1
    • 若不同,将「统计字符+计数」拼接到结果中,更新统计字符为当前字符,计数重置为1
  • 遍历完成后,把最后一组的「字符+计数」补到结果末尾,避免遗漏最后一段连续字符

代码示例

Python 实现

def rle_encode(input_str):
    if not input_str:
        return ""
    result = []
    current_char = input_str[0]
    count = 1
    for char in input_str[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(rle_encode("aabbbccdda")) # 输出:a2b3c2d2a1

JavaScript 实现

function rleEncode(inputStr) {
    if (inputStr.length === 0) return ""
    let result = ""
    let currentChar = inputStr[0]
    let count = 1
    for (let i = 1; i < inputStr.length; i++) {
        if (inputStr[i] === currentChar) {
            count++
        } else {
            result += currentChar + count
            currentChar = inputStr[i]
            count = 1
        }
    }
    // 补充最后一组统计结果
    result += currentChar + count
    return result
}

// 测试用例
console.log(rleEncode("aabbbccdda")) // 输出:a2b3c2d2a1

内容的提问来源于stack exchange,提问作者Sucheta Chaudhari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:54:03