Leetcode练习(Python):栈类:第150题:逆波兰表达式求值:根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
题目:
逆波兰表达式求值:根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
说明:
- 整数除法只保留整数部分。
- 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
思路:
使用辅助栈来实现,思路较简单,注意除法运算的整数处理就好。
程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | class Solution: def evalRPN( self , tokens: List [ str ]) - > int : if not tokens: return 0 length = len (tokens) stack1 = [] stack2 = [] for index in range (length): if tokens[index] not in "+-*/" : stack1.append( int (tokens[index])) else : stack2.append(stack1.pop()) stack2.append(stack1.pop()) num1 = stack2.pop() num2 = stack2.pop() if tokens[index] = = "+" : auxiliary = num1 + num2 elif tokens[index] = = "-" : auxiliary = num1 - num2 elif tokens[index] = = "*" : auxiliary = num1 * num2 else : auxiliary = int (num1 / num2) stack1.append(auxiliary) return stack1[ - 1 ] |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步