type
status
date
slug
summary
tags
category
icon
password
创建时间
Jun 4, 2025 02:07 AM
给你一个字符串表达式
s
,请你实现一个基本计算器来计算并返回它的值。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如
eval()
。三、栈§3.5 表达式解析
在转换为后缀表达式(逆波兰式)不支持负数,导致错误!!!
两个小措施
- 在
st_num
中放入 0:st_num.push(0);
- 如果上一个符号是
(
,也放入 0
可以将上面的两步合并为一步,也是使用两个两个栈
参考 tys
增加预处理阶段:
- 处理空格
- 处理括号中的
-
和+
还有一个小细节,将字符串的前后加上括号
()
,不用在后面再判断栈非空本题的特有解法——括号展开 + 栈
参考 力扣官方题解
操作栈中存储是
-1
和 1
,基本逻辑是- 遇到
+
号,当前符号更新为栈顶符号
- 遇到
-
号,当前符号更新为栈顶符号的相反数
- 遇到
(
号,将当前的符号保留,压入栈中
- 遇到
)
号,将当前符号弹出
- 遇到数字,根据当前符号进行计算
只有遇到括号才会把符号压入栈中,也就是栈中保存的是括号外面的符号,例如
-(1 + 2)
。现在栈中保存的就是 -1
。