加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

leetcode-mid-others-150. Evaluate Reverse Polish Notation

发布时间:2020-12-14 21:43:05 所属栏目:大数据 来源:网络整理
导读:mycode? ?42.30%、 注意:如果不考虑符号,-1//3=-1而不是等于0,因为是向下取整 class Solution(object): def evalRPN(self,tokens): """ :type tokens: List[str] :rtype: int """ from collections import deque def cal(data_1,data_2,item): if item ==

mycode? ?42.30%、

注意:如果不考虑符号,-1//3=-1而不是等于0,因为是向下取整

class Solution(object):
    def evalRPN(self,tokens):
        """
        :type tokens: List[str]
        :rtype: int
        """
        from collections import deque
        def cal(data_1,data_2,item):
            if item == /:
                return abs(data_2) // abs(data_1) *(-1 if (data_2 > 0) ^ (data_1 > 0) else 1)
            elif item == +:
                return data_2 + data_1
            elif item == -:
                return data_2 - data_1
            else:
                return data_2 * data_1
        dq = deque()
        calset = [/,+,-,*]
        for item in tokens:
            if item in calset:
                #print(‘if‘)
                data_1 = dq.pop()
                data_2 = dq.pop()
                data = cal(int(data_1),int(data_2),item)
                dq.append(data)        
            else:
                #print(‘else‘)
                dq.append(item) 
            #print(dq)
        return dq[0]

?

参考:

#https://www.cnblogs.com/zuoyuan/p/3760530.html  注意负数的除法,c++和pytho的区别
class Solution:
    # @param tokens,a list of string
    # @return an integer
    def evalRPN(self,tokens):
        stack = []
        for i in range(0,len(tokens)):
            if tokens[i] != + and tokens[i] != - and tokens[i] != * and tokens[i] != /:
                stack.append(int(tokens[i]))
            else:
                a = stack.pop()
                b = stack.pop()
                if tokens[i] == +:
                    stack.append(a+b)
                if tokens[i] == -:
                    stack.append(b-a)
                if tokens[i] == *:
                    stack.append(a*b)
                if tokens[i] == /:
                    if a*b < 0:
                        stack.append(-((-b)/a))
                    else:
                        stack.append(b/a)
        return stack.pop()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读