给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。
整数除法仅保留整数部分。力扣原文
示例 1:
输入:s = "3+2*2"
输出:7
示例 2:
输入:s = " 3/2 "
输出:1
示例 3:
输入:s = " 3+5 / 2 "
输出:5
const level={
"@":0,
"+":1,
"-":1,
"*":2,
"/":2
}
const calc=(num1,oper,num2)=>{
switch(oper){
case "+":
return Math.floor(num1+num2)
case "-":
return Math.floor(num1-num2)
case "*":
return Math.floor(num1*num2)
case "/":
return Math.floor(num1/num2)
}
return 0
}
var calculate = function(s) {
let num=[],oper=[];
s+="@"
for(let i=0,count=""; i<s.length ; i++){
let curItem=s[i]
if(level[curItem] === undefined){
count+=curItem
continue;
}
num.push(Math.floor(count))
count="";
while(oper.length!==0&& level[curItem] <= level[oper[oper.length-1]] ){
let b=num.pop();
let a=num.pop();
num.push(calc(a,oper[oper.length-1],b))
oper.pop()
}
oper.push(curItem)
}
return num[0]
};