224. 基本计算器
- 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。
- s 由数字、’+’、’-’、’(’、’)’、和 ’ ’ 组成
用栈的思想,如果遇到括号,优先处理括号内的内容,将之前处理的内容储存到栈中
class Solution:
def calculate(self, s: str) -> int:
res,num,sign = 0,0,1
stack = []
for c in s:
if c == "+" or c == "-":
res += num*sign
num = 0
sign = 1 if c == "+" else -1
elif c == "(":
stack.append(res)
stack.append(sign)
res = 0
sign = 1
elif c == ")":
res += num *sign
res *= stack.pop()
res += stack.pop()
num = 0
elif c.isdigit():
num = 10*num+int(c)
return res + num*sign
时间复杂度O(n)