LeetCode 150 Evaluate Reverse Polish Notation

来源:互联网 发布:东方闻樱 知乎 编辑:程序博客网 时间:2024/05/29 11:44

150. 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

将逆波兰式计算结果。难度Medium.

class Solution {public:    int evalRPN(vector<string>& tokens) {        stack<int> sta;        for(int i = 0; i < tokens.size(); i++)        {            string s = tokens[i];            if(s[s.length()-1] >= '0' && s[s.length()-1] <='9')            {                int j =0;                if(s[0]=='-')  j = 1;                int num = 0;                for( ; s[j]; j++)  num = num * 10 + s[j] - '0';                sta.push(s[0]=='-'? -num :num);            }            else            {                int opt2 = sta.top(); sta.pop();                int opt1 = sta.top(); sta.pop();                if(s[0]=='+') sta.push(opt1 + opt2);                else if(s[0]=='-') sta.push(opt1 - opt2);                else if(s[0]=='*') sta.push(opt1 * opt2);                else sta.push(opt1 / opt2);            }        }        return sta.top();    }};
0 0
原创粉丝点击