📜  使用堆栈验证表达式 - Javascript (1)

📅  最后修改于: 2023-12-03 15:36:38.983000             🧑  作者: Mango

使用堆栈验证表达式 - JavaScript

在编程中,我们常常需要验证表达式的合法性,堆栈是一种非常适合用于这种目的的数据结构。在 JavaScript 中,我们可以使用数组来实现堆栈的功能。

实现验证表达式的基本算法
  1. 遍历表达式中的每个字符(数字、符号、括号)。
  2. 如果是左括号,将其推入堆栈。
  3. 如果是右括号,将堆栈的顶部元素弹出。
  4. 如果弹出的元素不是对应的左括号,表达式无效。
  5. 如果遍历完表达式后,堆栈不为空,表达式无效。
实现堆栈的代码
// 初始化堆栈
const stack = [];

// 推入堆栈
stack.push('value');

// 弹出堆栈
const topValue = stack.pop();

// 获取堆栈顶部元素
const topValue = stack[stack.length - 1];
使用堆栈验证表达式的代码
function isValidExpression(expression) {
  const stack = [];
  const map = {
    '(': ')',
    '[': ']',
    '{': '}',
  };

  for (let char of expression) {
    if (char in map) {
      // 左括号入栈
      stack.push(char);
    } else if (Object.values(map).includes(char)) {
      // 右括号判断
      if (stack.length === 0 || map[stack.pop()] !== char) {
        return false;
      }
    }
  }

  // 表达式合法条件:栈为空
  return stack.length === 0;
}
测试
console.log(isValidExpression('()')); // true
console.log(isValidExpression('[]')); // true
console.log(isValidExpression('{}')); // true
console.log(isValidExpression('(]')); // false
console.log(isValidExpression('([)]')); // false
console.log(isValidExpression('{[]}')); // true

以上就是使用堆栈验证表达式的 JavaScript 代码。