逆波兰式(Reverse Polish notation,RPN,或逆波兰记法),也叫后缀表达式(将运算符写在操作数之后)。
代码
解题思路:根据逆波兰式的原理,操作符号都在操作数的后面,由此,我们就可以对逆波兰式数组进行遍历,如果是操作数,则先把操作数压入栈中,当发现操作符时,就可以把操作数出栈,进行相应的运算。以下代码假设传入的数组都是正确的逆波兰式,并且操作符都是有2个操作数的。
class RPN {
public:
typedef int64_t(RPN::*pFun)(int64_t, int64_t);
unordered_map<string, pFun> mapping;
RPN() {
mapping["+"] = &RPN::add;
mapping["-"] = &RPN::subtract;
mapping["*"] = &RPN::multiply;
mapping["/"]