Basic Calculator
Problem
Given a string s
representing an expression, implement a basic calculator to evaluate it.

Thought Process
We have a sign variable that keeps track of the previous sign

Solution
class Solution:
def calculate(self, s: str) -> int:
sign = 1
numbers = set("0123456789")
stack = []
sums = 0
num = 0
for i in range(len(s)):
#getting the number
#we don't want to apply the sign here
if s[i] in numbers:
num = num*10 + int(s[i])
elif s[i] == "+":
sums = sums + num*sign
num = 0
sign = 1
elif s[i] == "-":
sums = sums + num*sign
num = 0
sign = -1
elif s[i] == '(':
stack.append(sums)
stack.append(sign)
sums = 0
sign = 1
elif s[i] == ')':
sums = sums + num*sign
sums*=stack.pop()
sums += stack.pop()
num = 0
if num != 0:
sums+=sign*num
return sums
Time Complexity
Time: O(n)
Space: O(n)
Last updated
Was this helpful?