AlgoLounge

Basic Calculator

hard

Given a string s representing a valid mathematical expression, implement a basic calculator to evaluate it, and return the result.

Note: You are not allowed to use any built-in function which evaluates strings as mathematical expressions, such as eval().

Examples

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 * 10⁵
  • s consists of digits, '+', '-', '(', ')', and ' '
  • s represents a valid expression
  • '+' is not used as a unary operation (i.e., "+1" and "+(2 + 3)" are invalid)
  • '-' could be used as a unary operation (i.e., "-1" and "-(2 + 3)" are valid)
  • There will be no two consecutive operators in the input
TypeScript
Loading editor…
List of test cases (10)
Case 1
s = "1 + 1"
Case 2
s = " 2-1 + 2 "
Case 3
s = "(1+(4+5+2)-3)+(6+8)"
Case 4
s = "1"
Case 5
s = "100"
Case 6
s = "1-(2+3)"
Case 7
s = "10 - (3 + (2 - 1))"
Case 8
s = "-(3+2)"
Case 9
s = "1 + (2 - (3 + (4 - 5)))"
Case 10
s = "0 + 0"