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

Evaluate Reverse Polish Notation

时间:2014-09-28 11:27:51      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   ar   strong   for   sp   

题目描述:

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

解题方案:

该题借助一个栈,遍历tokens时,如果当前不为"+","-","*","/",则入栈,否则将栈顶的两个元素出栈后,运算后结果入栈。下面是该题代码:

 1 class Solution {
 2 public:
 3     int evalRPN(vector<string> &tokens) {
 4         stack<int> result;
 5         int a, b;
 6         for (vector<string>::iterator ix = tokens.begin(); ix != tokens.end(); ++ix) {
 7             if (*ix == "+" || *ix == "-" || *ix == "*" || *ix == "/") {
 8                 a = result.top();
 9                 result.pop();
10                 b = result.top();
11                 result.pop();
12                 if (*ix == "+") {
13                     result.push(b + a);
14                 }
15                 if (*ix == "-") {
16                     result.push(b - a);
17                 }
18                 if (*ix == "*") {
19                     result.push(b * a);
20                 }
21                 if (*ix == "/") {
22                     result.push(b / a);
23                 }
24             } else {
25                 result.push(atoi((*ix).c_str()));
26             }
27         }
28         return result.top();
29     }
30 };

 

Evaluate Reverse Polish Notation

标签:style   blog   http   color   io   ar   strong   for   sp   

原文地址:http://www.cnblogs.com/skycore/p/3997672.html

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