题目描述
我们熟悉的表达式如a+b、a+b*(c+d)等都属于中缀表达式。中缀表达式就是运算符在两个操作数中间:num1运算符num2。同理,后缀表达式就是运算符在两个操作数之后:num1 num2运算符。现在,给出一个后缀表达式,请你编写程序求出表达式 。为了简单一些,后缀表达式中的所有操作数都只有一位数字。
数据保证,输入的字符串一定是合法的后缀表达式,且后缀表达式的长度不超过100。
输入描述
输入一行,包括一个字符串,为后缀表达式,字符之间没有空格。
输出描述
输出一行,包含一个整数,代表后缀表达式的值。
样例输入
12+3*84/-
样例输出
7
提示
至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次栈顶元素 op 栈顶元素),并将结果入栈;重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结果。
例如后缀表达式“34+5*6-”:
(1) 从左至右扫描,将3和4压入堆栈;
(2) 遇到+运算符,因此弹出4和3(4为栈顶元素,3为次顶元素,注意与前缀表达式做比较),计算出3+4的值,得7,再将7入栈;
(3)将5入栈;
(4) 接下来是*运算符,因此弹出5和7,计算出75=35,将35入栈;
(5) 将6入栈;