leetcode Evaluate Reverse Polish Notation

来源:互联网 发布:php 解析html 编辑:程序博客网 时间:2024/06/04 17:56

原题链接:https://leetcode.com/problems/evaluate-reverse-polish-notation/

Description

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

class Solution {public:    inline bool is_digit(char ch) {        return ch >= '0' && ch <= '9';    }    int evalRPN(vector<string>& tokens) {        stack<int> A;        int a, b;        size_t n = tokens.size();        for (size_t i = 0; i < n; i++) {            int v = 0;            if (is_digit(tokens[i][0]) || tokens[i].length() > 1) {                bool f = tokens[i][0] == '-';                size_t j, k = tokens[i].size();                for (j = f ? 1 : 0; j < k; j++) v = v * 10 + tokens[i][j] - '0';                A.push(f ? -v : v);            } else {                char &ch = tokens[i][0];                a = A.top(); A.pop();                b = A.top(); A.pop();                switch (ch) {                    case '+':                        A.push(a + b);                        break;                    case '-':                        A.push(b - a);                        break;                    case '*':                        A.push(a * b);                        break;                    case '/':                        A.push(b / a);                        break;                }            }        }        return A.top();    }};
0 0
原创粉丝点击