本帖最后由 ninjax 于 2020-7-25 12:05 编辑
不知道出结果没? stack只能存sign...完全没思路
磨出来一个
[Python] 纯文本查看 复制代码 class Solution:
def calculate(self, s: str) -> int:
return self._calc(s, 0)
def _calc(self, s, start):
i = start
ans = 0
sign = 1
num = 0
while i < len(s):
if s[i] == "(":
end, val = self._calc(s, i+1)
ans += sign*val
i = end+1
elif s[i] == ")":
return i, ans
elif s[i] == "+":
sign = 1
i += 1
elif s[i] == "-":
sign = -1
i += 1
elif s[i].isdigit():
while i < len(s) and s[i].isdigit():
num = num*10 + int(s[i])
i += 1
ans += num*sign
num = 0
else:
i += 1
return ans + sign*num
|