精華區beta Marginalman 關於我們 聯絡資訊
https://leetcode.com/problems/evaluate-reverse-polish-notation 150. Evaluate Reverse Polish Notation 回傳逆波蘭表示法的結果值 有效運算子為 "+" "-" "*" "/" 每個操作數會是整數或是另一個表達式 兩個整數之間的除法是向零截斷 不會有被零除的情況 答案和中間計算都可以用32位元整數表示 Example 1: Input: tokens = ["2","1","+","3","*"] Output: 9 Explanation: ((2 + 1) * 3) = 9 Example 2: Input: tokens = ["4","13","5","/","+"] Output: 6 Explanation: (4 + (13 / 5)) = 6 看了一下維基 就是遇到數字 -> 存起來 遇到運算 -> 取最後2個數來計算 Python3 code: ------------------------------------------------------ class Solution: def ops(op, b, a): match op: case "+": return a + b case "-": return a - b case "*": return a * b case "/": return int(a / b) def evalRPN(self, tokens: List[str]) -> int: lst = [] for token in tokens: if token.lstrip("-").isdigit(): lst.append(int(token)) else: lst.append(self.ops(token, lst.pop(), lst.pop())) return lst[0] ------------------------------------------------------ 首先判斷是否是數字 有負號所以用 lstrip 把負號移掉來判斷 查了一下 有 operator 可以用 不過這邊還是自己做運算 因為沒有另外用變數存lst.pop() 所以要注意放入ops時的順序 向零截斷的關係 用 int(a / b) 而不是 a // b -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.82.227 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1706616867.A.727.html
JerryChungYC: 啊 打字打太久 還先洗了個碗 01/30 20:15
JerryChungYC: 反過來用 if token in ["+", "-", "*", "/"] 也可以 01/30 20:18