Java教程

150. 逆波兰表达式求值

本文主要是介绍150. 逆波兰表达式求值,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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. 逆波兰表达式求值的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!