192 - 224 基本计算器
Last updated
Last updated
class Solution:
def calculate(self, s: str) -> int:
stack, number, result, sign = [], 0, 0, 1
for c in s:
if c.isdigit():
number = (number * 10) + int(c)
elif c in ["-", "+"]:
result += sign*number
number = 0
sign = 1 if c == "+" else -1
elif c == "(":
stack.append(result)
stack.append(sign)
result = 0
sign = 1
elif c == ")":
result += sign*number
number = 0
result *= stack.pop()
result += stack.pop()
if number != 0:
result += sign*number
return result