Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are+,-,*,/. Each operand may be an integer or another expression.
Some examples:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
将字符串序列转化为算式并计算,且符号在数字之后
1 class Solution { 2 public: 3 int evalRPN(vector<string> &tokens) { 4 stack<int> s; 5 for(int i=0;i<tokens.size();i++){ 6 string cur = tokens[i]; 7 int temp = atoi(cur.c_str()); 8 if(cur=="+"||cur=="-"||cur=="*"||cur=="/"){ 9 int left,right; 10 if(!s.empty()){ 11 right=s.top(); 12 s.pop(); 13 } 14 if(!s.empty()){ 15 left=s.top(); 16 s.pop(); 17 } 18 if(cur=="+") 19 temp=left+right; 20 else if(cur=="-") 21 temp=left-right; 22 else if(cur=="*") 23 temp=left*right; 24 else if(cur=="/") 25 temp=left/right; 26 27 28 } 29 s.push(temp); 30 } 31 int res = s.top(); 32 return res; 33 } 34 };