[224][困难][栈] 基本计算器
最后更新于
最后更新于
class Solution:
def calculate(self, s: str) -> int:
res = 0
num, pre_sign = 0, 1
stack = []
for c in s:
if c.isdigit():
num = num * 10 + int(c)
elif c in ('+', '-'):
res += pre_sign * num
num, pre_sign = 0, 1 if c == '+' else -1
elif c == '(':
stack.append(res)
stack.append(pre_sign)
res, pre_sign = 0, 1
elif c == ')':
res += pre_sign * num
res *= stack.pop()
res += stack.pop()
num = 0
res += pre_sign * num
return res