求逆波兰表达式的值。
在逆波兰表达法中,其有效的运算符号包括 +
, -
, *
, /
。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。
样例
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
class Solution {
public:
inline bool contains(string &s){
if(!s.compare("+")||!s.compare("-")||!s.compare("*")||!s.compare("/"))
return false;
return true;
}
inline int Pop(){
int tmp=s.top();
s.pop();
return tmp;
}
int evalRPN(vector<string>& tokens) {
for(auto &e:tokens){
if(contains(e)){
s.push(stoi(e));
continue;
}
int a=Pop();
int b=Pop();
if(!e.compare("+"))
s.push(b+a);
else if(!e.compare("-"))
s.push(b-a);
else if(!e.compare("*"))
s.push(b*a);
else
s.push(b/a);
}
return s.top();
}
private:
stack<int> s;
};