0224. Basic Calculator
https://leetcode.com/problems/basic-calculator
Description
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:** 2Example 2:
**Input:** s = " 2-1 + 2 "
**Output:** 3Example 3:
**Input:** s = "(1+(4+5+2)-3)+(6+8)"
**Output:** 23Constraints:
1 <= s.length <= 3 * 105sconsists of digits,'+','-','(',')', and' '.srepresents a valid expression.'+'is not used as a unary operation.'-'could be used as a unary operation and in this case, it will not be used directly after a +ve or -ve signs (will be inside parentheses).There will be no two consecutive operators in the input.
Every number and running calculation will fit in a signed 32-bit integer.
ac1: Deque + multiple passes
slow
ac2: stack
ac3: 2 stack
more intuitive, generalize to complex problem like #227 #772
ac4: stack, get rid of parenthesis
sign = stack.peek() * (c == '+' ? 1: -1); is to simulate the process of removing parenthesis.
Last updated
Was this helpful?