evaluate-reverse-polish-notation——栈

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 };

 

posted @ 2017-06-06 18:01  鸭子船长  阅读(140)  评论(0编辑  收藏  举报