Given a string s representing a valid expression, implement a basic calculator to evaluate it, and return the result of the evaluation.
Note: You are not allowed to use any built-in function which evaluates strings as mathematical expressions, such as eval().
Example 1:
- Input: s = β1 + 1β
- Output: 2
Example 2:
- Input: s = β 2-1 + 2 β
- Output: 3
Example 3:
- Input: s = β(1+(4+5+2)-3)+(6+8)β
- Output: 23
Constraints:
- 1 <= s.length <= 3 * 105
- s consists of digits, β+β, β-β, β(β, β)β, and β β.
- s represents a valid expression.
- β+β is not used as a unary operation (i.e., β+1β and β+(2 + 3)β is invalid).
- β-β could be used as a unary operation (i.e., β-1β and β-(2 + 3)β is valid).
- There will be no two consecutive operators in the input.
- Every number and running calculation will fit in a signed 32-bit integer.