zoukankan      html  css  js  c++  java
  • Leetcode150.逆波兰表达式求值

    题意

    逆波兰表达式求值,题目保证输入的逆波兰表达式是有效可解的

    思路

    • 表达式求值是栈的经典应用,可以说是很熟悉了。和算数式->逆波兰表达式相比,这个求值可以说是小儿科
    • 主要思路就是——构造一个栈用来存放运算数,当遇到操作符的时候出栈2个运算数,进行相应的运算,算完之后将结果压入栈中,如此往复直到处理完
    • 注意⚠️
      • 要处理好'-'号和负数的判断,我这里是通过首字符和长度来判断的
      • 先后出栈的元素分别是表达式a ? bba
      • C++中可以使用std::stoi(string s)来将string转化为int类型的数

    代码

    class Solution {
    public:
        int calculate(int x, int y, char op)
        {
            switch(op){
                case '+':   return x + y;
                case '-':   return x - y;
                case '/':   return x / y;
                case '*':   return x * y;
            }
            return 1;    //表示执行成功,实际执行不会运行到这里
        }
        int evalRPN(vector<string>& tokens) {
            stack<int> nums;
            for(auto token: tokens)
            {
                if(token[0] == '+' || token[0] == '/' || token[0] == '*' ||  token[0] == '-' && token.size() == 1 )
                {
                    auto right = nums.top();
                    nums.pop();
                    auto left = nums.top();
                    nums.pop();
                    int val = calculate(left, right, token[0]);
                    nums.push(val);
                }else   
                    nums.push(stoi(token));
            }
            return nums.top();
        }
    };
    
  • 相关阅读:
    云虚拟化
    yum puppet 并整合控制台
    Centos6.4 openNebula
    ubuntu Server LAmp环境
    openSuSE12.1 zypper LAMP
    yum puppet
    NYOJ 257 郁闷的C小加(一)
    JAVA_SE基础——17.方法的重载
    poj 1390 Blocks (经典区间dp 方块消除)
    HBase数据同步到ElasticSearch的方案
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/13498340.html
Copyright © 2011-2022 走看看