题目:
题解:
int calculate(char* s) {
int n = strlen(s);
int ops[n], top = 0;
int sign = 1;
ops[top++] = sign;
int ret = 0;
int i = 0;
while (i < n) {
if (s[i] == ' ') {
i++;
} else if (s[i] == '+') {
sign = ops[top - 1];
i++;
} else if (s[i] == '-') {
sign = -ops[top - 1];
i++;
} else if (s[i] == '(') {
ops[top++] = sign;
i++;
} else if (s[i] == ')') {
top--;
i++;
} else {
long num = 0;
while (i < n && s[i] >= '0' && s[i] <= '9') {
num = num * 10 + s[i] - '0';
i++;
}
ret += sign * num;
}
}
return ret;
}