当前位置:首页 > 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实现计算器

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

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…