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

    https://www.cnblogs.com/grandyang/p/4247718.html

    逆波兰表达式就是把操作数放前面,把操作符后置的一种写法。用stack解决就好了。

    因为tokens里面存的是string,所以判断+、-等符号时,都要是双引号"",不能用平时字符的单引号''。

    并且将string转换为int存储的时候,不能使用-'0'的方式,这是字符转换的方式,这个是字符串,所以必须用stoi。

    注意在减法、除法时,num1、num2的前后顺序很重要。

    class Solution {
    public:
        int evalRPN(vector<string>& tokens) {
            if(tokens.empty())
                return 0;
            stack<int> s;
            for(int i = 0;i < tokens.size();i++){
                if(tokens[i] != "+" && tokens[i] != "-" && tokens[i] != "*" && tokens[i] != "/")
                    s.push(stoi(tokens[i]));
                else{
                    int num1 = s.top();
                    s.pop();
                    int num2 = s.top();
                    s.pop();
                    int tmp;
                    if(tokens[i] == "+")
                        tmp = num1 + num2;
                    else if(tokens[i] == "-")
                        tmp = num2 - num1;
                    else if(tokens[i] == "*")
                        tmp = num1 * num2;
                    else if(tokens[i] == "/")
                        tmp = num2 / num1;
                    s.push(tmp);
                }
            }
            return s.top();
        }
    };
  • 相关阅读:
    Palindrome
    Girls' research
    最长回文
    Water Tree
    Alternating Current
    Psychos in a Line
    Feel Good
    Color the Fence
    javaScript内置类Date,Math等
    DOM之兄弟节点
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/10925485.html
Copyright © 2011-2022 走看看