224. 基本计算器

89 阅读1分钟

给你一个字符串表达式 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;
};