Basic Calculator
Given a string s representing a valid expression, implement a basic calculator to evaluate it, and return the result of the evaluation.
Note: You are not allowed to use any built-in function which evaluates strings as mathematical expressions, such as eval().
def calculate(self, s):
res, num, sign, stack = 0, 0, 1, []
for ss in s:
if ss.isdigit():
num = 10*num + int(ss)
elif ss in ["-", "+"]:
res += sign*num
num = 0
sign = [-1, 1][ss=="+"]
elif ss == "(":
stack.append(res)
stack.append(sign)
sign, res = 1, 0
elif ss == ")":
res += sign*num
res *= stack.pop()
res += stack.pop()
num = 0
return res + num*sign
Posted by Jamie Meyer 14 days ago