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();
        }
    };
    
  • 相关阅读:
    删除旧版vue-cli
    vue.extend和vue.component的区别
    vue-loader处理vue文件
    CentOS7安装iptables防火墙
    java类的初始化顺序
    java的接口和抽象类的理解
    js中的in操作符
    js中call和apply函数
    js的类型转换
    闭包作用
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/13498340.html
Copyright © 2011-2022 走看看