Implement a basic calculator to evaluate a simple expression string.
The expression string may contain open ( and closing parentheses ), the plus + or minus sign -, non-negative integers and empty spaces  .
Example 1:
Input: "1 + 1"
Output: 2
Example 2:
Input: " 2-1 + 2 "
Output: 3
Example 3:
Input: "(1+(4+5+2)-3)+(6+8)"
Output: 23
Note:
       You may assume that the given expression is always valid.
       Do not use the eval built-in library function.
class Solution:
     def calculate(self, s):
         result = number = 0 
         sign = 1
         stack= []
         for i in s:
             if i == ' ':
                 continue
             if i.isdigit():
                 number = number * 10 + int(i)
             elif i == '+':
                 result += sign * number
                 number = 0 
                 sign = 1 
             elif i == '-':
                 result += sign * number 
                 number = 0 
                 sign = -1
             elif i == '(':
                 stack.append(result)
                 stack.append(sign)
                 result = 0 
                 number = 0 
                 sign = 1 
             elif i == ')':
                 result += sign * number 
                 number =  0
                 sign = 1 
                 #result += stack.pop() * stack.pop()
                 result = result * stack.pop() + stack.pop()
         result += number * sign
         return result 
                 

class Solution:
     def calculate(self, s):
         result = number = 0 
         sign = 1
         stack= []
         for i in s:
             if i == ' ':
                 continue
             if i.isdigit():
                 number = number * 10 + int(i)
             elif i == '+':
                 result += sign * number
                 number = 0 
                 sign = 1 
             elif i == '-':
                 result += sign * number 
                 number = 0 
                 sign = -1
             elif i == '(':
                 stack.append(result)
                 stack.append(sign)
                 result = 0 
                 number = 0 
                 sign = 1 
             elif i == ')':
                 result += sign * number 
                 number =  0
                 sign = 1 
                 #result += stack.pop() * stack.pop()
                 result = result * stack.pop() + stack.pop()
         result += number * sign
         return result 
                 
