• 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
      ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
    class Solution {
    public:
        int evalRPN(vector<string> &tokens) 
        {
            stack<int> vals;
            if(tokens.size()==0) return 0;
            
            for(int i=0;i<tokens.size();i++)
            {
                string token=tokens[i];
                if(token=="+" || token=="-" || token=="*" || token=="/")
                {
                    int y=vals.top();vals.pop();
                    int x=vals.top();vals.pop();
                    if(token=="+") vals.push(x+y);
                    if(token=="-") vals.push(x-y);
                    if(token=="*") vals.push(x*y);
                    if(token=="/") vals.push(x/y);
                }
                else
                {
                    vals.push(string2int(token));
                }
            }
            return vals.top();
        }
        int string2int(string s)
        {
            bool positive=true;
            if(s[0]=='-') positive=false;
            
            int result=0;
            for(int i=0;i<s.length();i++)
            if(s[i]!='-')
             result=result*10+s[i]-'0';
            return positive?result:-result;
        }
    };
  • 相关阅读:
    MAC下cocos2dx环境搭建
    eclipse混淆打包出错
    eclipseme升级
    MyEclipse 10 中增加插件
    j2me图片处理大全
    关于svn使用
    NFS相关
    BMP文件格式图解
    UDA1341TS
    OpenOCD初始化脚本(uboot)
  • 原文地址:https://www.cnblogs.com/erictanghu/p/3759728.html
Copyright © 2020-2023  润新知