class Solution:
    def calculate(self, s: str) -> int:
        stack = []
        num = 0
        prev_op = '+'
 
        def calc(c, num):
            if c == '+':
                stack.append(num)
            elif c == '-':
                stack.append(-num)
            elif c == '*':
                stack.append(stack.pop() * num)
            elif c == '/':
                stack.append(int(stack.pop() / num))
 
        for c in s:
            if c.isdigit():
                num = num * 10 + int(c)
            elif c in ['+', '-', '*', '/']:
                calc(prev_op, num)
                num = 0
                prev_op = c
            
        calc(prev_op, num)
        return sum(stack)