首页 > 其他 > 详细

LeetCode: Reverse Words in a String:Evaluate Reverse Polish Notation

时间:2014-07-27 23:32:59      阅读:338      评论:0      收藏:0      [点我收藏+]

LeetCode: Reverse Words in a String: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

地址:https://oj.leetcode.com/problems/evaluate-reverse-polish-notation/
计算波兰后缀表达式的值,具体做法是利用一个栈,如果遇到数字则把数字进栈,如果遇到操作符就把栈中的数字出栈进行运算(二元操作符出栈两个数字,一元操作符出栈一个数字),最后的结果存在栈中。代码:
 1 class Solution {
 2 public:
 3     int evalRPN(vector<string> &tokens) {
 4         int lop, rop;
 5         vector<string>::const_iterator cIter = tokens.begin();
 6         stack<int> s;
 7         for(; cIter != tokens.end(); ++cIter){
 8             if ((*cIter).size() == 1 && !isdigit((*cIter)[0])){
 9                 char op = (*cIter)[0];
10                 rop = s.top();
11                 s.pop();
12                 lop = s.top();
13                 s.pop();
14                 if (+ == op){
15                     s.push(lop + rop);
16                 } else if (- == op){
17                     s.push(lop - rop);
18                 } else if (* == op){
19                     s.push(lop * rop);
20                 } else{
21                     s.push(lop / rop);
22                 }
23             } else {
24                 s.push(atoi((*cIter).c_str()));
25             }
26         }
27         return s.top();
28     }
29 };

 

LeetCode: Reverse Words in a String:Evaluate Reverse Polish Notation,布布扣,bubuko.com

LeetCode: Reverse Words in a String:Evaluate Reverse Polish Notation

原文:http://www.cnblogs.com/boostable/p/leetcode_evaluate_reverse_polish_notation.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!