请写一个整数计算器,支持加减乘三种运算和括号。
数据范围:
,保证计算结果始终在整型范围内
要求:空间复杂度:
,时间复杂度
// 第一种方法
function solve( s ){
let stack = [],i = 0,sign='+',num=0;
while(i < s.length){
if(s[i]=='('){
let flag= 1, start = i+1;
while(flag>0){
i++;
if(s[i]==')') flag--;
if(s[i]=='(') flag++;
}
num = solve(s.slice(start,i));
i--;
}else if(s[i]>='0'&&s[i]<='9'){
num = num*10 + Number(s[i]);
}
if((s[i]<'0'|| s[i]>'9') || i==s.length-1){
if(sign=='*') stack.push(Number(stack.pop())*num);
if(sign=='+') stack.push(Number(num));
if(sign=='-') stack.push(Number(num)*-1);
if(sign=='/') stack.push(Number(stack.pop())/num);
sign = s[i];
num = 0;
}
i++;
}
return stack.reduce((total,n)=>{return total+n},0);
}
// 第二种
function solve ( s ) {
return eval(s);
}
// 第三种
function solve ( s ) {
let func = new Function(`return ${s}`);
return func();
}