Basic Calculator II

leetcode/basic-calculator-ii

Code

  • O(N) : 144 ms, faster than 32.91% of Python3 online submissions for Basic Calculator II.
class Solution:
    def calculate(self, s: str) -> int:
        s = s.replace(" ", "")
        sign = '+'
        num = 0
        stack = [0]
        for i in range(len(s)):
            c = s[i]
            if '0' <= c <= '9':
                num = num * 10 + int(c)
                if i != len(s) - 1:
                    continue
            if sign == '+':
                stack.append(num)
            elif sign == '-':
                stack.append(-num)
            elif sign == '*':
                stack[-1] = stack[-1] * num
            elif sign == '/':
                stack[-1] = int(stack[-1] / num)
            sign = c
            num = 0
        return sum(stack)