首页 > 其他 > 详细

Evaluate Reverse Polish Notation

时间:2014-03-24 19:03:41      阅读:353      评论: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

一道混合的题,难度不高,是几个部分组成。

需要注意:
1.转换数字,负数的存在。
2.出栈时数字的顺序。
3.好像没什么了……
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class Solution {
public:
    int evalRPN(vector<string> &tokens) {
        stack<int> sk;
        int result;
        for(int i = 0 ; i < tokens.size(); i++)
        {
            if(isop(tokens[i]))
            {
                int second = sk.top();
                sk.pop();
                int first = sk.top();
                sk.pop();
                 
                int midresult;
                if(tokens[i] == "+") midresult = first + second;
                else if(tokens[i] == "-")midresult = first - second;
                else if(tokens[i] == "*")midresult = first * second;
                else if(tokens[i] == "/")midresult = first / second;
                 
                sk.push(midresult);
                 
            }
            else
            {
                int tp = string2num(tokens[i]);
                sk.push(tp);
            }
        }
        return sk.top();
         
    }
    bool isop(string s)
    {
        if(s== "+" ||s== "-" ||s== "*" ||s== "/"  )return 1;
        else return 0;
    }
    int string2num(string s)
    {
        int re =0 ;
        int flag = 0;
        int i = 0;
        if(s[0] == ‘-‘)
        {
            flag =1;
            i++;
        }
        for( ; i < s.size();i++)
        {
            re = re*10;
            re = re + s[i]-‘0‘;
        }
        if(flag ==1)
        re = 0 -re;
        return re;
    }
};

  

Evaluate Reverse Polish Notation,布布扣,bubuko.com

Evaluate Reverse Polish Notation

原文:http://www.cnblogs.com/pengyu2003/p/3621164.html

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