当前位置:首页 > JavaScript

js实现decodeString

2026-04-05 15:36:42JavaScript

实现 decodeString 的方法

使用递归方法解析嵌套的编码字符串。递归可以处理多层嵌套的情况,通过识别数字和括号来递归解码内部字符串。

function decodeString(s) {
    const stack = [];
    let currentNum = 0;
    let currentStr = '';

    for (let char of s) {
        if (char === '[') {
            stack.push(currentStr);
            stack.push(currentNum);
            currentStr = '';
            currentNum = 0;
        } else if (char === ']') {
            let num = stack.pop();
            let prevStr = stack.pop();
            currentStr = prevStr + currentStr.repeat(num);
        } else if (/\d/.test(char)) {
            currentNum = currentNum * 10 + parseInt(char);
        } else {
            currentStr += char;
        }
    }

    return currentStr;
}

使用正则表达式匹配和替换

通过正则表达式匹配编码模式,利用替换函数动态生成解码后的字符串。这种方法简洁但可能不适合非常复杂的嵌套情况。

function decodeString(s) {
    const regex = /(\d+)\[([^\[\]]+)\]/g;
    const replacer = (match, num, str) => str.repeat(num);
    let result = s;

    while (result.includes('[')) {
        result = result.replace(regex, replacer);
    }

    return result;
}

处理多层嵌套的优化方法

结合栈和循环处理多层嵌套,确保每次都能正确解析最内层的编码字符串,逐步向外扩展。

js实现decodeString

function decodeString(s) {
    const stack = [];
    let res = '';
    let num = 0;

    for (let char of s) {
        if (char === '[') {
            stack.push(res);
            stack.push(num);
            res = '';
            num = 0;
        } else if (char === ']') {
            let count = stack.pop();
            let prevStr = stack.pop();
            res = prevStr + res.repeat(count);
        } else if (char >= '0' && char <= '9') {
            num = num * 10 + parseInt(char);
        } else {
            res += char;
        }
    }

    return res;
}

注意事项

  • 确保输入字符串格式正确,避免未闭合的括号或非法字符。
  • 对于极深的嵌套,递归方法可能会导致栈溢出,可以考虑使用迭代方法优化。
  • 测试用例应覆盖单层、多层嵌套以及混合字符的情况。

标签: jsdecodeString
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…