LeetCode 224. [Python] Basic Calculator
原题链接
困难
作者:
徐辰潇
,
2021-05-20 22:13:04
,
所有人可见
,
阅读 251
class Solution:
def calculate(self, s: str) -> int:
#TC: O(len(s))
#SC: O(len(s))
res = 0
num = 0
sign = 1
stack = []
for c in s:
if c.isdigit():
num = 10*num + int(c)
elif c == '+' or c == '-':
res = res + sign*num
num = 0
if c == '+':
sign = 1
else:
sign = -1
elif c == '(':
stack.append(res)
stack.append(sign)
res = 0
sign = 1
elif c == ')':
res = res + sign*num
prev_sign = stack[-1]
prev_res = stack[-2]
stack.pop()
stack.pop()
res = prev_sign*res + prev_res
sign = 1
num = 0
return res + sign*num