Leetcode 之Evaluate Reverse Polish Notation(41)

Posted 牧马人夏峥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 之Evaluate Reverse Polish Notation(41)相关的知识,希望对你有一定的参考价值。

很简单的一道题,定义一个栈保留操作数,遇操作符则弹出运算即可。

bool isOperator(string &op)
      {
          //注意用法
          return op.size() == 1 && string("+-*/").find(op) != string::npos;
      }
      int evalRPN(vector<string> &tokens)
      {
          stack<string> s;
          for (auto token : tokens)
          {
              if (!isOperator(token))
              {
                  //如果是操作数,则入栈
                  s.push(token);
              }
              else
              {
                  //如果是操作符,则弹出操作数进行运算
                  int y = stoi(s.top());
                  s.pop();
                  int x = stoi(s.top());
                  s.pop();
                  if (token == "+")x += y;
                  if (token == "-")x -= y;
                  if (token == "*")x *= y;
                  if (token == "/")x /= y;
                  s.push(to_string(x));
              }
          }
          return stoi(s.top());
      }
View Code

 

以上是关于Leetcode 之Evaluate Reverse Polish Notation(41)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 399. Evaluate Division

Leetcode: Evaluate Division

Leetcode 399. Evaluate Division

leetcode [399]Evaluate Division

LeetCode-Evaluate Division

LeetCode-Evaluate Reverse Polish Notation (Python)