Member-only story
class Solution:
def calculate(self, s: str) -> int:
stack = []
num = 0
prev_op = '+'
for index, char in enumerate(s):
if char.isdigit():
num = num * 10 + int(char)
if index == len(s)-1 or char in ['+', '-', '*', '/']:
if prev_op == '+':
stack.append(num)
if prev_op == '-':
stack.append(-num)
if prev_op == '*':
prev_num = stack.pop()
num = prev_num * num
stack.append(num)
if prev_op == '/':
prev_num = stack.pop()
num = int(prev_num / num)
stack.append(num)
num = 0
prev_op = char
return sum(stack)