LeetCode刷题记录2020-10-10之日常划水!!!

面试题 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)
原文地址:https://www.cnblogs.com/854594834-YT/p/13795997.html