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:
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): """ :type s: str :rtype: int """ num,sign,i = 0,1,0 op = [] while i <len(s): if s[i].isdigit(): start = i while i<len(s) and s[i].isdigit(): i += 1 n = int(s[start:i]) num += n * sign continue if s[i]==‘+‘: sign = 1 i += 1 continue if s[i]==‘-‘: sign = -1 i += 1 continue if s[i]==‘(‘: op.append(num) op.append(sign) num = 0 sign = 1 i += 1 continue if s[i]==‘)‘: num = num * op.pop() num += op.pop() i += 1 continue i += 1 return num