zoukankan      html  css  js  c++  java
  • 力扣算法题—150. 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.

    Note:

    • Division between two integers should truncate toward zero.
    • The given RPN expression is always valid. That means the expression would always evaluate to a result and there won't be any divide by zero operation.

    Example 1:

    Input: ["2", "1", "+", "3", "*"]
    Output: 9
    Explanation: ((2 + 1) * 3) = 9
    

    Example 2:

    Input: ["4", "13", "5", "/", "+"]
    Output: 6
    Explanation: (4 + (13 / 5)) = 6
    

    Example 3:

    Input: ["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]
    Output: 22
    Explanation: 
      ((10 * (6 / ((9 + 3) * -11))) + 17) + 5
    = ((10 * (6 / (12 * -11))) + 17) + 5
    = ((10 * (6 / -132)) + 17) + 5
    = ((10 * 0) + 17) + 5
    = (0 + 17) + 5
    = 17 + 5
    = 22

    Solution:
      使用栈即可
     1 class Solution {
     2 public:
     3     int evalRPN(vector<string> &tokens) {
     4         if (tokens.size() == 0)return 0;
     5         stack<int>s;
     6         for (auto a : tokens)
     7         {
     8             if (a == "+" || a == "-" || a == "*" || a == "/")
     9             {
    10                 int num2 = s.top();
    11                 s.pop();
    12                 int num1 = s.top();
    13                 s.pop();
    14                 int res = 0;
    15                 if (a == "+")
    16                     res = num1 + num2;
    17                 else if (a == "-")
    18                     res = num1 - num2;
    19                 else if (a == "*")
    20                     res = num1 * num2;
    21                 else
    22                     res = num1 / num2;
    23                 s.push(res);
    24             }
    25             else
    26                 s.push(atoi(a.c_str()));
    27         }
    28         return s.top();
    29     }
    30 };
  • 相关阅读:
    mybatis中crud操作范例
    Guava----Function
    Spring mvc Controller接口
    简单的验证码识别(opecv)
    Mat转换为QImage
    将多张图片无缝拼接方法
    模式识别---图像二值化
    双边过滤算法
    C++对于大型图片的加载缩放尝试
    ijg库解码超大型jpeg图片
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11756316.html
Copyright © 2011-2022 走看看