【题目描述】
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +, -, *, /. Each operand may be an integer or another expression.
求逆波兰表达式的值。
在逆波兰表达法中,其有效的运算符号包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。
【题目链接】
www.lintcode.com/en/problem/evaluate-reverse-polish-notation/
【题目解析】
看到这种题目时,可以马上联想到stack或是queue之类的数据结构,因为可以依序地把数字储存下来,又可以正向或反向地把数字取出来。
除此之外,一开始还要为输入字串做检查,检查是不是合格可运算的.例如,如果输入字串都是运算符号而没有数字,那这是不能算的,需要回传错误.或者是输入字串只有数字而没有运算符号,这也是不能计算的.另外,输入字串的第一个和第二个元素一定不会是运算符号,一定会是数字.所以这几个条件就当做是程序里的throw exception的条件.
接着,只需要一个for loop,把符合所有条件的数字用stack记录下来,然后遇到运算符号时,把从stack把之前的数字拿出来运算,算完后再写回去stack.所以,用这样的逻辑就可以把这题的答案写出来了.
【参考答案】
www.jiuzhang.com/solutions/evaluate-reverse-polish-notation/