面试题 16.26. 计算器

class Solution:
  def calculate(self, s: str) -> int:   
     #
return eval(s.replace('/', '//')) numbers = [] if isinstance(s, str): s = s.replace(' ', '') sList = list(s) sign = '+' num = 0 operator = ['-', '+', '*', '/'] while sList: sElem = sList.pop(0) if sElem.isdigit(): num = num*10 + int(sElem) if sElem == '(': num = self.calculate(sList) if sElem in operator or s == ')' or not sList: if sign == '+': numbers.append(num) if sign == '-': numbers.append(-num) if sign == '*': numbers.append(numbers.pop() * num) if sign == '/': numbers.append(int(numbers.pop() / num)) sign = sElem num = 0 if sElem == ')': break return sum(numbers)