# Leetcode 227. Basic Calculator II ## 題解 ### Stack solution 先把 **\*** 和 **/** 處理完,再把所有的數字加起來,遇到 **-** 轉換數字為負數 ```python! class Solution: def calculate(self, strings: str) -> int: n = len(strings) if n == 0 or not strings: return 0 stack = [] cur_num = 0 op = "+" for i in range(n): s = strings[i] if s.isdigit(): cur_num = (cur_num * 10) + int(s) if not s.isdigit() and s != " " or i == n - 1: # 處理到最後一個的時候,需要把最後的 operator 順便一起處理掉 if op == "*": stack.append(stack.pop() * cur_num) elif op == "/": stack.append(int(stack.pop() / cur_num)) elif op == "+": stack.append(cur_num) elif op == "-": stack.append(cur_num * -1) op = s cur_num = 0 return sum(stack) ```