如何处理字符串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
相关产品推荐
相关产品推荐

