Implement a function calculate() that takes a string as an input. The string can contain +, -, (, ), 0-9 and spaces. The function should return the result like a basic calculator.
/**
* @param {string} str
* @return {number}
*/
const calculate = (str) => {
if (!str) {
return;
}
const stack = [];
let operand = 0;
let result = 0;
let sign = 1;
for (let i = 0; i < str.length; i++) {
const curr = str.charAt(i);
if (curr === '(') {
stack.push(result);
stack.push(sign);
sign = 1;
result = 0;
} else if (curr === ')') {
result += sign * operand;
result *= stack.pop();
result += stack.pop();
operand = 0;
} else if (curr === '+') {
result += sign * operand;
sign = 1;
operand = 0;
} else if (curr === '-') {
result += sign * operand;
sign = -1;
operand = 0;
} else if (!isNaN(parseInt(curr))) {
operand = (operand * 10) + parseInt(curr);
}
}
return result + (sign * operand);
};
console.log(calculate('1 + 1'));