📜  给表达式加括号的程序 - Javascript (1)

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

给表达式加括号的程序 - Javascript

在编程中,我们有时需要给表达式加上括号以改变运算顺序。但手动添加括号会耗费很多时间和精力,因此编写一个程序来自动添加括号会非常方便。

下面是一个使用Javascript编写的给表达式加括号的程序示例。

代码示例:
function addParentheses(exp) {
  let stack = [];
  let dotFlag = false;

  for (let i = exp.length - 1; i >= 0; i--) {
    if (exp[i] === ')') {
      stack.push(exp[i]);
      dotFlag = true;
    } else if (exp[i] === '(') {
      stack.pop();
      dotFlag = false;
    } else if (/\d/.test(exp[i])) {
      if (dotFlag) {
        while (stack.length && stack[stack.length - 1] !== ')') {
          stack.pop();
        }
        stack.pop();
        stack.push('(' + exp[i] + ')');
        dotFlag = false;
      } else {
        stack.push(exp[i]);
      }
    } else {
      stack.push(exp[i]);
    }
  }

  while (stack.length) {
    stack.pop();
  }

  return stack.join('').split('').reverse().join('');
}
说明:

该函数接受一个表达式作为参数。函数内部使用了一个栈(stack)和一个标志位(dotFlag)。

遍历表达式字符串,每遇到一个右括号(')')就将其压入栈中,并将标志位设置为true;每遇到一个左括号('(')就将栈顶的右括号弹出,并将标志位设置为false;如果遇到一个数字,则需要根据标志位来决定是否添加括号;如果遇到运算符,则直接压入栈中。

最后我们将栈清空,并将其中的元素按照反序拼接起来,就得到了加好括号的表达式。

使用方法:
let exp = '3+5*2^8/(7-2)';
let result = addParentheses(exp); // 返回: (3+((5*(2^8))/((7-2))))
总结

使用程序自动添加括号可以大大减少编写复杂表达式的工作量,同时保证了表达式的正确性。本例中的代码只是一个简单的示例,您可以根据实际需求对其进行修改,从而实现更加复杂的功能。