🗒️224. 基本计算器
2025-6-4
| 2025-6-4
0  |  阅读时长 0 分钟
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
    增加预处理阶段:
    • 处理空格
    • 处理括号中的 -+
    还有一个小细节,将字符串的前后加上括号 () ,不用在后面再判断栈非空
    本题的特有解法——括号展开 + 栈
    操作栈中存储是 -11,基本逻辑是
    • 遇到 + 号,当前符号更新为栈顶符号
    • 遇到 - 号,当前符号更新为栈顶符号的相反数
    • 遇到 ( 号,将当前的符号保留,压入栈中
    • 遇到 ) 号,将当前符号弹出
    • 遇到数字,根据当前符号进行计算
    只有遇到括号才会把符号压入栈中,也就是栈中保存的是括号外面的符号,例如 -(1 + 2) 。现在栈中保存的就是 -1

    📎 参考

     
  • 【题单】常用数据结构(前缀和/差分/栈/队列/堆/字典树/并查集/树状数组/线段树)
  • 决策树394. 字符串解码
    Loading...