给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。
注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。
var calculate = function(s) {
let stack = [];
let result = 0;
let num = 0;
let sign = 1;
for(let i=0;i<s.length;i++){
let chart = s[i];
if (isDigit(chart)){
num = num*10 + parseInt(chart);
} else if (chart === '+'||chart === '-'){
result += sign*num;
num = 0;
sign = chart === '+'?1:-1;
} else if(chart === '('){
stack.push(result);
stack.push(sign);
result = 0;
sign = 1;
num = 0;
} else if(chart === ')'){
result += sign *num;
result *=stack.pop();
result +=stack.pop();
num = 0;
}
}
result +=sign*num;
function isDigit(value){
return value.match(/\d/);
}
return result;
};