ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

150. 逆波兰表达式求值

2022-01-12 23:58:34  阅读:156  来源: 互联网

标签:150 int pop item num 表达式 求值 stack append


在这里插入图片描述
我直接震惊、、、怪不得一开始一直不过 卡在了这里 我淦
在这里插入图片描述

class Solution:
    def evalRPN(self, tokens: List[str]) -> int:
        '''
        思路:栈实现,遇着数字入栈,遇着运算符出栈
        '''
        stack = []
        for i in tokens:
            if i not in ['+','-','*','/']: # 判断该字符是否为字符串
                stack.append(int(i))
            else:
                a,b = stack.pop(),stack.pop() # 根据题意,stack里面必定至少有俩元素
                if i == '+':
                    stack.append(b+a)
                elif i == '-':
                    stack.append(b-a)
                elif i == '/':
                    stack.append(int(b/a))
                else:
                    stack.append(b*a)
        return stack.pop()

看了一下答案,这个语句写的确实六六

class Solution:
    def evalRPN(self, tokens: List[str]) -> int:
        stack = []
        for item in tokens:
            if item not in {"+", "-", "*", "/"}:
                stack.append(item)
            else:
                first_num, second_num = stack.pop(), stack.pop()
                stack.append(
                    int(eval(f'{second_num} {item} {first_num}'))   # 第一个出来的在运算符后面
                )
        return int(stack.pop()) # 如果一开始只有一个数,那么会是字符串形式的

标签:150,int,pop,item,num,表达式,求值,stack,append
来源: https://blog.csdn.net/qq_49821869/article/details/122464525

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有