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