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

如何用JavaScript实现字符串游程编码(RLE)转换功能

游程编码 JavaScript 实现方案

实现思路

  • 先处理边界场景:输入为空字符串时直接返回空,避免后续逻辑报错
  • 初始化三个变量:存储最终结果的数组(数组拼接性能远高于字符串反复拼接)、当前正在统计的连续字符、当前字符的连续出现次数,初始状态下默认取第一个字符作为统计起点,计数为1
  • 从字符串第二个下标位置开始遍历,逐个对比当前字符与正在统计的字符:
    • 两者相等则计数+1
    • 两者不等则先把上一段的统计结果写入结果数组:若计数为1直接写入字符,否则写入计数+字符的拼接值,随后重置统计字符为当前字符、计数重置为1
  • 遍历结束后,需要把最后一段未写入的统计结果追加到结果数组,最后把结果数组转成字符串返回即可

完整代码实现

function runLengthEncode(str) {
  // 空字符串直接返回
  if (!str.length) return ''
  let result = []
  let currentChar = str[0]
  let count = 1
  for (let i = 1; i < str.length; i++) {
    if (str[i] === currentChar) {
      count++
    } else {
      // 计数为1只存字符,否则存计数+字符
      result.push(count === 1 ? currentChar : `${count}${currentChar}`)
      currentChar = str[i]
      count = 1
    }
  }
  // 处理最后一组连续字符
  result.push(count === 1 ? currentChar : `${count}${currentChar}`)
  return result.join('')
}

测试验证

使用示例输入测试:

const input = 'AAABBBBCCX9999!!!!!!**'
console.log(runLengthEncode(input)) 
// 输出:3A4B2CX496!2* 完全符合要求

内容的提问来源于stack exchange,提问作者Luiz Delgado Gomes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:06:03