题目链接:https://leetcode-cn.com/problems/basic-calculator/
难度:困难
描述:
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。
提示:
- 字符串长度:
[1, 300000]
s
由数字'('
,')'
,'+'
,'-'
和' '
组成s
是一个有效的表达式+
与-
是二元运算符
题解
class Solution(object):
def calculate(self, s):
res, num, sign = 0, 0, 1
stack = []
for c in s:
if c.isdigit():
num = 10 * num + int(c)
elif c == "+" or c == "-":
res += sign * num
num = 0
sign = 1 if c == "+" else -1
elif c == "(":
stack.append(res)
stack.append(sign)
res = 0
sign = 1
elif c == ")":
res += sign * num
num = 0
res *= stack.pop()
res += stack.pop()
res += sign * num
return res