给你一个字符串表达式 s
,请你实现一个基本计算器来计算并返回它的值。
注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval()
。
示例 1:
输入:s = "1 + 1" 输出:2
示例 2:
输入:s = " 2-1 + 2 " 输出:3
示例 3:
输入:s = "(1+(4+5+2)-3)+(6+8)" 输出:23
int calculate(char* s) {
int n=strlen(s);
int i=0;
int sum=0;
int fu=1;
int m=0;
int val[n];
int head=0;
char ch;
for(int i=0;i<n;i++)
{
ch=s[i];
if(isdigit(ch))
{
m=m*10+(ch-'0');
}
else
if(ch=='+'||ch=='-')
{
sum+=fu*m;
m=0;
fu=(ch=='+') ? 1:-1;
}
else
if(ch=='(')
{
val[head++]=sum;
val[head++]=fu;
sum=0;
fu=1;
}
else
{
if(ch==')')
{
sum+=fu*m;
m=0;
sum*=val[--head];
sum+=val[--head];
}
}
}
sum+=m*fu;
return sum;
}