Skip to content
js
/*
 * @lc app=leetcode.cn id=224 lang=javascript
 *
 * [224] 基本计算器
 */

// @lc code=start
/**
 * @param {string} s
 * @return {number}
 */
var calculate = function(s) {
  // 符号位,默认一个正
  const ops = [1];
  let sign = 1;

  let ret = 0;
  const n = s.length;
  let i = 0;
  while (i < n) {
      if (s[i] === ' ') {
          i++;
      } else if (s[i] === '+') {
          sign = ops[ops.length - 1];
          i++;
      } else if (s[i] === '-') {
          sign = -ops[ops.length - 1];
          i++;
      } else if (s[i] === '(') {
          ops.push(sign);
          i++;
      } else if (s[i] === ')') {
          ops.pop();
          i++;
      } else {
          let num = 0;
           // 去查看当前字符的后一位是否存在
          // 如果操作并且后一位依旧是数字,那么就需要把后面的数字累加上来
          while (i < n && !(isNaN(Number(s[i]))) && s[i] !== ' ') {
              num = num * 10 + s[i].charCodeAt() - '0'.charCodeAt();
              i++;
          }
          ret += sign * num;
      }
  }
  return ret;
};


// @lc code=end
calculate("(1+(4+5+2)-3)+(6+8)")

上次更新于: