Leetcode 227 Solution
This article provides solution to leetcode question 227 (basic-calculator-ii)
Access this page by simply typing in "lcs 227" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/basic-calculator-ii
Solution
class Solution:
def calculate(self, s: str) -> int:
s = str.replace(s, ' ', '') + '+0'
if s[0] != '+' or s[0] != '-':
s = '+' + s
last_op = '+'
last_num = 0
nums = []
ops = []
for ch in s:
if '0' <= ch <= '9':
last_num = last_num * 10 + int(ch)
elif ch == '+' or ch == '-' or ch == '*' or ch == '/':
if last_op == '+' or last_op == '-':
nums.append(last_num)
ops.append(last_op)
elif last_op == '*':
nums[-1] *= last_num
elif last_op == '/':
nums[-1] //= last_num
last_op = ch
last_num = 0
ans = 0
for num, op in zip(nums, ops):
if op == '+':
ans += num
elif op == '-':
ans -= num
return ans