JavaScript压缩字符串解压函数开发:解决多位数计数场景适配问题
JavaScript 多位数压缩字符串解压实现
原有代码的问题是仅支持单数字重复计数,遇到连续数字组成的多位数时会拆分处理,导致解压结果错误。
修正后完整代码
function isNumeric(num) { if (num === '') return false if (num === null) return false return !isNaN(num) } function decompress(compressedStr) { let result = '' // 临时存储当前待重复的字符 let currentChar = '' // 临时收集连续的数字字符 let numStr = '' for (const char of compressedStr) { if (isNumeric(char)) { numStr += char } else { // 遇到非数字字符,先处理之前累积的数字和待重复字符 if (numStr) { result += currentChar.repeat(Number(numStr)) numStr = '' currentChar = char } else { // 没有待处理的数字,将上一个字符直接加入结果 if (currentChar) { result += currentChar } currentChar = char } } } // 处理遍历结束后剩余的未处理内容 if (numStr) { result += currentChar.repeat(Number(numStr)) } else { result += currentChar } return result }
验证测试用例
decompress('a')输出结果:adecompress('ab12')输出结果:abbbbbbbbbbbbdecompress('a3b2a2')输出结果:aaabbaa
内容的提问来源于stack exchange,提问作者Joji
相关产品推荐
相关产品推荐

