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

    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.

    Some examples:

    ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9

    ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

    原题链接: https://oj.leetcode.com/problems/evaluate-reverse-polish-notation/

    题目大意: 逆波兰表达式

    思路: 利用栈实现, 注意+, -单目运算符; 另外目前leetcode使用的python为2.7.5, 除法不是精确的除法, 两个整数相除是地板除, 浮点数除是精确的除法; 注意负数的判断, 使用isdigit是判断不了的;

     1 class Solution:
     2     # @param tokens, a list of string
     3     # @return an integer
     4     def evalRPN(self, tokens):
     5         stack = list()
     6 
     7         for token in tokens:
     8             try:
     9                 tmp = int(token)
    10             except ValueError: #operator
    11                 if token == '+': #may be a unary operator
    12                     if len(stack) > 1:
    13                         o1 = stack.pop()
    14                         o2 = stack.pop()
    15 
    16                         stack.append(o2 + o1)
    17                 elif token == '-':
    18                     if len(stack) > 1:
    19                         o1 = stack.pop()
    20                         o2 = stack.pop()
    21 
    22                         stack.append(o2 - o1)
    23                     else:
    24                         o1 = stack.pop()
    25                         stack.append(-o1)
    26 
    27                 elif token == '*':
    28                     o1 = stack.pop()
    29                     o2 = stack.pop()
    30 
    31                     stack.append(o2 * o1)
    32                 else:
    33                     o1 = stack.pop()
    34                     o2 = stack.pop()
    35 
    36                     stack.append(int(float(o2) / o1))
    37 
    38             else: #number
    39                 stack.append(tmp)
    40 
    41             
    42         return stack[0]
  • 相关阅读:
    MySQL之存储引擎
    MySQL之触发器
    MySQL之存储过程
    MySQL之自定义函数
    MySQL之视图
    三种方式安装mariadb-10.3.18
    Linux创建智能DNS
    CentOS 7 搭建Cobbler实现自动化安装系统
    搭建PXE实现自动化安装系统
    编译安装dropbear
  • 原文地址:https://www.cnblogs.com/hzhesi/p/3928910.html
Copyright © 2011-2022 走看看