美文网首页
224. Basic Calculator

224. Basic Calculator

作者: jluemmmm | 来源:发表于2021-12-08 22:54 被阅读0次

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

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

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

    • 与字符串中当前位置的运算符有关
    • 如果当前位置处于一系列括号内,与括号前面的运算符有关,每遇到一个以 - 开头的括号,此后的符号都要被反转

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

    • 时间复杂度O(n),空间复杂度O(n)
    • Runtime: 133 ms, faster than 29.54%
    • Memory Usage: 45.7 MB, less than 25.32%
    /**
     * @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;
    };
    

    相关文章

      网友评论

          本文标题:224. Basic Calculator

          本文链接:https://www.haomeiwen.com/subject/dtkxfrtx.html