码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 150. Evaluate Reverse Polish Notation

时间:2015-01-11 17:35:26      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

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

主要是栈的应用:

tockens[i]如果是操作数,直接压栈。如果是运算符,则两次pop的结果运算后压栈。

最后栈中的元素即为结果。

 1 int evalRPN(vector<string> &tokens) 
 2     {
 3         int op_a, op_b;
 4         stack<int> sk;
 5         for (int i = 0; i < tokens.size(); i++)
 6         {
 7             string str = tokens[i];
 8             if ((str[0] == +) || (str[0] == - && str.size() == 1) || (str[0] == *) || (str[0] == /))
 9             {
10                 op_a = sk.top();
11                 sk.pop();
12                 op_b = sk.top();
13                 sk.pop();
14                 switch(str[0])
15                 {
16                     case +:
17                         sk.push(op_b + op_a);
18                         break;
19                     case -:
20                         sk.push(op_b - op_a);
21                         break;
22                     case *:
23                         sk.push(op_b * op_a);
24                         break;
25                     default:
26                         sk.push(op_b / op_a);
27                 }
28             }
29             else 
30             {
31                 sk.push(atoi(str.c_str()));
32             }
33         }
34         return sk.top();
35     }

 

leetcode 150. Evaluate Reverse Polish Notation

标签:

原文地址:http://www.cnblogs.com/ym65536/p/4216732.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!