zoukankan      html  css  js  c++  java
  • leetcode[150] Evaluate Reverse Polish Notation

    逆波兰表示法,在维基百科here

    一不小心就看到了维基上有说用栈处理。然后就用栈处理了。

    需要注意的是,操作数前后不要弄错,stoi可以调用。它应该是在stdlib.h的头文件里,不过我在codeblock上试了不行。

    class Solution {
    public:
        int evalRPN(vector<string> &tokens) 
        {
            int size  = tokens.size();
            if (size == 0) return 0;
            stack<int> sta;
            for (int i = 0; i < size; i++)
            {
                if (isdigit(tokens[i][0]) || tokens[i].size() > 1)
                    sta.push(stoi(tokens[i]));
                else
                {
                    int op1 = sta.top();
                    sta.pop();
                    int op2 = sta.top();
                    sta.pop();
                    switch(tokens[i][0])
                    {
                        case '+':
                            sta.push(op1 + op2); break;
                        case '-':
                            sta.push(op2 - op1); break;
                        case '*':
                            sta.push(op1 * op2); break;
                        case '/':
                            sta.push(op2 / op1); break;
                    }
                }
            }
            return sta.top();
        }
    };

    如果自己实现stoi的话:

        int stoi150(string s)
        {
            int flag = 1;
            if (s[0] == '-')
            {
                flag = -1;
                s = s.substr(1);
            }
            else if (s[0] == '+')
            {
                s = s.substr(1);
            }
    
            int size = s.size(), ans = 0;
            for (int i = 0; i < size; i++)
            {
                ans = 10 * ans + (s[i] - '0');
            }
            return flag * ans;
        }
    View Code
  • 相关阅读:
    个人总结21
    个人总结08
    个人总结07
    构建之法读后感01
    学习进度表 03
    四则运算3
    求最大值
    学习进度表02
    四则运算 2
    学习进度表01
  • 原文地址:https://www.cnblogs.com/higerzhang/p/4170704.html
Copyright © 2011-2022 走看看