当前位置:首页 > JavaScript

js实现decodeString

2026-01-31 23:18:33JavaScript

解码字符串的实现方法

在JavaScript中实现decodeString功能,通常指解码类似3[a]2[bc]这样的编码字符串,结果为aaabcbc。以下是几种实现方式:

使用栈结构处理嵌套

这种方法利用栈处理嵌套的编码字符串,适用于多层嵌套的情况。

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 === ']') {
      const num = stack.pop();
      const prevStr = stack.pop();
      currentStr = prevStr + currentStr.repeat(num);
    } else if (!isNaN(char)) {
      currentNum = currentNum * 10 + parseInt(char);
    } else {
      currentStr += char;
    }
  }
  return currentStr;
}

示例调用

console.log(decodeString("3[a]2[bc]")); // 输出 "aaabcbc"

递归解法

对于嵌套层级较深的情况,递归方法可以更直观地处理。

function decodeString(s, index = [0]) {
  let result = '';
  while (index[0] < s.length && s[index[0]] !== ']') {
    if (isNaN(s[index[0]])) {
      result += s[index[0]++];
    } else {
      let num = 0;
      while (!isNaN(s[index[0]])) {
        num = num * 10 + parseInt(s[index[0]++]);
      }
      index[0]++; // 跳过 '['
      const innerStr = decodeString(s, index);
      index[0]++; // 跳过 ']'
      result += innerStr.repeat(num);
    }
  }
  return result;
}

示例调用

console.log(decodeString("3[a2[c]]")); // 输出 "accaccacc"

正则表达式替换

通过正则表达式逐步替换编码部分,适合简单场景。

function decodeString(s) {
  const regex = /(\d+)\[([a-z]*)\]/g;
  while (s.includes('[')) {
    s = s.replace(regex, (_, num, str) => str.repeat(num));
  }
  return s;
}

注意事项

js实现decodeString

  • 此方法对多层嵌套的支持有限,可能需要多次替换。

性能与复杂度分析

  • 栈方法:时间复杂度为O(n),空间复杂度为O(n),适合大多数场景。
  • 递归方法:可能面临调用栈过深的问题,但代码更简洁。
  • 正则方法:适合简单模式,多次替换可能影响性能。

根据实际需求选择合适的方法,栈方法通常是通用且高效的选择。

标签: jsdecodeString
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…