150. 逆波兰表达式求值

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()) # 如果一开始只有一个数,那么会是字符串形式的

上一篇:java面试- 深入理解JVM(七)——Class文件结构


下一篇:150亿参数,谷歌开源了史上最大视觉模型V-MoE的全部代码