我们平时看到的 1+2*(3-4*5)+6/7 叫做中缀表达式,平时我们习惯用这个计算的原因是我们可以整体地去看到这个表达式并且清楚地知道各个运算符的优先级,但是计算机并不一定知道,因为他总是从前往后去遍历这个表达式。如上面这个例子,当按照计算机的逻辑去扫描了1+2的时候,并不敢直接去进行运算,因为可能后面存在一个优先级更高的操作符会优先进行计算。甚至有些时候还会出现括号这一种可以改变操作符优先级的符号!!所以这个时候,为了能够解决这个问题,就有了波兰表达式(前缀表达式)和逆波兰表达式(后缀表达式)。
前缀表达式:操作符+操作数+操作数
中缀表达式:操作数+操作符+操作数
后缀表达式:操作数+操作数+操作符
该题也是利用到基本计算器的解题思想
策略3解题:
策略4解题:存键值对
如果入栈序列是1-n 将所有可能的出栈序列存储起来并返回。
我们来测试一下:
目标:实现一个基本计算器,能够满足以下条件的运算:
设计思路来源:中缀表达式和后缀表达式
具体的设计思路: