基础计算器实现(支持 + - * / 运算,禁止使用 eval)
题目描述
实现一个基本计算器来计算字符串表达式的值,表达式中仅包含整数、加号 (+
)、减号 (-
)、乘号 (*
) 和除号 (/
)。
- 整数除法应向零取整。
- 表达式是有效的,无需考虑非法输入。
- 不允许使用
eval()
或类似的内置函数直接求值。 - 所有中间计算结果保证在 [−231,231−1][-2^{31}, 2^{31} - 1] 范围内。
示例 1:
输入:s = "3+2*2"
输出:7
示例 2:
输入:s = " 3/2 "
输出:1
示例 3:
输入:s = " 3+5 / 2 "
输出:5
解题分析
观察题目,可以发现:
+
、-
是低优先级运算;*
、/
是高优先级运算;- 需要按照优先级正确处理表达式计算顺序;
- 空格需要忽略。
由于只有四种运算(没有括号),而且每次乘除法是就地执行,可以用**栈(stack)**来保存中间结果。
具体来说: