Given a string s which represents an expression, evaluate this expression and return its value. s consists of integers and operators ('+', '-', '*', '/') separated by some number of spaces.
def calculate(self, s: str) -> int:
num = 0
res = 0
last = 0
op = '+'
for i, c in enumerate(s):
if c.isdecimal():
num = 10 * num + int(c)
if i == len(s) - 1 or not s[i + 1].isdecimal():
if op == '+':
res += num
last = num
elif op == '-':
res -= num
last = -num
elif op == '*':
res = res - last + last * num
last = last * num
else:
res = res - last + int(last / num)
last = int(last / num)
num = 0
else:
if c in ['+', '-', '*', '/']:
op = c
return res