代码随想录 | Day10 | 逆波兰表达式

73 阅读1分钟
var evalRPN = function(tokens) {
    if(tokens.length==1) return Number(tokens[0])
    
    let validate = {
        '+':'+',
        '-':'-',
        '*':'*',
        '/':'/'
    }

    let stack = []
    let count = 0
    for(let i =0;i<tokens.length;i++){
        if(validate.hasOwnProperty(tokens[i])){
            let right = stack.pop()
            let left =stack.pop()
            count = SumTk(tokens[i],left,right)
            stack.push(count)
        }else{
            stack.push(tokens[i])
        }
    }

    return count
};


function SumTk(signal,left,right){
    left = Number(left)
    right = Number(right)
    switch(signal){
        case '+':
            return left+right
        case '-':
            return left-right
        case '*':
            return left*right
        case '/':
            return parseInt(left/right)
    }
}