Leetcode 224. Basic Calculator
中缀表达式
中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间。中缀表达式是人们常用的算术表示方法,它是由相应的语法树的中序遍历的结果得到的。
A + B * ( C - D ) - E * F
后缀表达式
首先要知道什么是后缀表达式,后缀表达式又叫做逆波兰式吗它是由相应的语法树的后序遍历的结果得到的。如下图的后缀表达式为:
A B C D - * + E F * -
中缀表达式转化为后缀表达式
- 从左到右遍历中缀表达式的每个数字和符号;
- 若是数字就输出,即成为后缀表达式的一部分;
- 若是符号:
- 如果是左括号,入栈;
- 如果是右括号,输出栈顶元素直到左括号为止,括号不输出;
- 如果不是括号,判断其与栈顶符号的优先级,优先级低于栈顶符号(乘除优先加减),则栈顶元素依次出栈并输出,并将当前符号进栈。优先级高于栈顶符号,入栈。
根据后缀表达式计算算式的值
- 维护一个栈,遍历后缀表达式
- 遇到数字入栈
- 遇到操作符,弹出两个栈顶元素,计算结果,将结果入栈
- 最后栈顶元素即为所求
1 | class Solution: |