224. Basic Calculator

2021-12-08  本文已影响0人  jluemmmm

给定一个字符串,实现基本计算器计算结果。字符串中包含加、减、空格、括号

字符串除了数字与括号外,只有加减号,如果展开表达式中的所有括号,得到的新表达式中,数字本身不会变化,只是每个数字前面的符号发生变化。

当前位置的字符符号取值:

当数字字符有多位的情况下,也要进行加减计算。

/**
 * @param {string} s
 * @return {number}
 */
var calculate = function(s) {
  s = s.replace(/\s/g, '');
  const stack = [1];
  const len = s.length;
  let res = 0;
  let i = 0;
  let sign = 1;
  while (i < len) {
    const cur = s[i];
    if (cur === '+') {
      sign = stack[stack.length - 1];
      i++;
    } else if (cur === '-') {
      sign = -stack[stack.length - 1];
      i++;
    } else if (cur === '(') {
      stack.push(sign);
      i++;
    } else if (cur === ')') {
      stack.pop();
      i++;
    } else {
      let num = 0;
      while (i < len && /[0-9]/.test(s[i])) {
        num = num * 10 + s.charCodeAt(i) - 48;
        i++;
      }
      res += sign * num;
    }
  }
  return res;
};
上一篇下一篇

猜你喜欢

热点阅读