zoukankan      html  css  js  c++  java
  • Evaluate 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
    int stoi(string str)
        {
            bool flag = true;
            if (str[0] == '-') flag = false;
            int ret = 0, i;
            i = (flag) ? 0 : 1;
            for (; i<str.size(); i++)
            {
                ret = ret * 10 + (str[i] - '0');
            }
            return (flag) ? ret : (-ret);
        }
    
        int evalRPN(vector<string> &tokens)
        {
            int ans = 0;
            stack<int> s;
            int a, b, c;
            for (int i = 0; i < tokens.size(); i++)
            {
                if (tokens[i] != "+"&&tokens[i] != "-"&&tokens[i] != "*"&&tokens[i] != "/")
                {
                    string str = tokens[i];
                    int temp = stoi(str);
                    s.push(temp);
                }
                else
                {
                    a = s.top();
                    s.pop();
                    b = s.top();
                    s.pop();
                    if (tokens[i] == "+") c = b + a;
                    if (tokens[i] == "-") c = b - a;
                    if (tokens[i] == "*") c = b*a;
                    if (tokens[i] == "/") c = b / a;
                    s.push(c);
                }
            }
            ans = s.top();
            return ans;
        };
    int _tmain(int argc, _TCHAR* argv[])
    {
        Solution *sln = new Solution();
        //string s = "  hello dd  ";
        //sln->reverseWords(s);
        //cout << s << endl;
    
        vector<string> svec;
        svec.push_back("4");
        svec.push_back("13");
        svec.push_back("5");
        svec.push_back("/");
        svec.push_back("+");
    
        int ret = sln->evalRPN(svec);
    
        cout << ret << endl;
    
        return 0;
    }
  • 相关阅读:
    iOS基础
    iOS基础 ----- 内存管理
    NSAttributedString 的一些基本用法
    node安装使用
    docker常用命令
    docker lnmp
    easy-wechat
    composer
    center7系统搭建lnmp
    xammp环境配置
  • 原文地址:https://www.cnblogs.com/pengpenghappy/p/3861606.html
Copyright © 2011-2022 走看看