Skip to content

Latest commit

 

History

History
45 lines (33 loc) · 904 Bytes

227.md

File metadata and controls

45 lines (33 loc) · 904 Bytes

227 Basic Calculator II

Description

link


Solution

  • See Code

Code

O(n)

class Solution:
    def calculate(self, s):
        """
        :type s: str
        :rtype: int
        """
        num, stack, sign = 0, [], "+"
        
        for i in range(len(s)):
            if s[i].isdigit():
                num = num * 10 + int(s[i])
            if s[i] in "+-*/" or i == len(s) - 1:
                if sign == "+":
                    stack.append(num)
                elif sign == "-":
                    stack.append(-num)
                elif sign == "*":
                    stack.append(stack.pop()*num)
                else:
                    stack.append(int(stack.pop()/num))
                num = 0
                sign = s[i]
                
        return sum(stack)