Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Balanced Parentheses Problem Using Stack in DSA Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main purpose of using a stack in the Balanced Parentheses Problem?
A stack helps keep track of opening parentheses so that each closing parenthesis can be matched correctly in the right order.
Click to reveal answer
beginner
Which characters are typically checked in the Balanced Parentheses Problem?
The characters checked are opening brackets '(', '{', '[' and their corresponding closing brackets ')', '}', ']'.
Click to reveal answer
beginner
What happens if a closing parenthesis does not match the top of the stack?
It means the parentheses are not balanced, so the expression is invalid.
Click to reveal answer
beginner
Why do we check if the stack is empty at the end of the Balanced Parentheses check?
If the stack is empty, it means all opening parentheses were matched properly. If not, some opening parentheses were not closed.
Click to reveal answer
beginner
In TypeScript, which data structure is commonly used to implement a stack for this problem?
An array is commonly used as a stack by using push() to add and pop() to remove elements.
Click to reveal answer
What is the first step when you encounter an opening parenthesis in the string?
APush it onto the stack
BPop from the stack
CIgnore it
DCheck if the stack is empty
What should you do when you find a closing parenthesis in the string?
APush it onto the stack
BPop the top element from the stack and check if it matches
CIgnore it
DClear the stack
If the stack is not empty after processing the entire string, what does it mean?
AParentheses are balanced
BThere are unmatched closing parentheses
CThe string is empty
DThere are unmatched opening parentheses
Which of these strings is balanced?
A(()))
B({[)]}
C({[]})
D((())
What data structure property is essential for solving the Balanced Parentheses Problem?
ALast In First Out (LIFO)
BFirst In First Out (FIFO)
CRandom Access
DSorted Order
Explain how a stack helps in checking if parentheses in a string are balanced.
Think about how you remember the last opening bracket you saw.
You got /3 concepts.
    Describe the step-by-step process to validate balanced parentheses using a stack.
    Imagine reading the string from left to right and using a stack to track.
    You got /5 concepts.

      Practice

      (1/5)
      1. What is the core idea behind using a stack to validate balanced parentheses?
      easy
      A. Count total opening and closing brackets and compare
      B. Push opening brackets onto the stack; when a closing bracket appears, check if the top matches
      C. Sort the string and compare first and last characters
      D. Use a counter that increments for '(' and decrements for ')'

      Solution

      1. Step 1: Stack tracks unmatched opens

        Opening brackets are pushed onto the stack. Each closing bracket must match the most recent unmatched opening bracket - the stack top.
      2. Step 2: Why stack, not counter

        A counter works for a single bracket type but fails for mixed types: '([)]' has equal counts but is invalid. Stack tracks TYPE and ORDER.
      3. Final Answer:

        Push open, match against stack top on close. -> Option B
      4. Quick Check:

        Stack: push '(' '[' '{'. On close, pop and verify match. [OK]
      Hint: Stack: push opens, pop+match on close. Counter alone fails for mixed bracket types. [OK]
      Common Mistakes:
      • Using a counter which fails for '([)]'
      • Not checking bracket TYPE when matching
      • Forgetting to check stack is empty at the end
      2. What should be returned when a closing bracket is encountered but the stack is empty?
      easy
      A. true - the string might still be balanced
      B. false - there is no matching opening bracket
      C. Push the closing bracket and continue
      D. Skip it and continue scanning

      Solution

      1. Step 1: Empty stack on close

        If we see ')' but the stack is empty, there is no unmatched opening bracket to pair with it. The string is invalid.
      2. Step 2: Return false immediately

        No need to continue scanning - return false right away.
      3. Final Answer:

        Return false - unmatched closing bracket. -> Option B
      4. Quick Check:

        Close on empty stack = unmatched = false. [OK]
      Hint: Empty stack + closing bracket = instant false. No match possible. [OK]
      Common Mistakes:
      • Continuing to scan (wastes time, wrong)
      • Pushing closing bracket (corrupts the stack)
      • Returning true (incorrect)
      3. Is '([)]' a valid balanced parentheses string?
      medium
      A. Yes - it has equal counts of each bracket type
      B. No - the brackets are nested incorrectly
      C. Yes - all brackets are closed
      D. Yes - opening and closing counts match

      Solution

      1. Step 1: Trace the stack

        Push '(': stack=['(']. Push '[': stack=['(','[']. See ')': stack top is '[' ≠ ')' - MISMATCH. Return false.
      2. Step 2: Why counting fails

        Count approach: 1 '(', 1 '[', 1 ')', 1 ']' - all equal. But stack reveals the TYPE mismatch.
      3. Final Answer:

        Invalid - '[' is at top when ')' arrives. -> Option B
      4. Quick Check:

        Stack trace: push '(' push '[' → ')' arrives → top='[' ≠ ')' → false. [OK]
      Hint: Trace stack: '([)]' → push '(' push '[' → ')' mismatches '[' → false. [OK]
      Common Mistakes:
      • Counting brackets and saying valid
      • Not checking bracket type on pop
      • Thinking equal counts = balanced
      4. What is the time and space complexity of the stack-based balanced parentheses solution?
      medium
      A. Time O(n²), Space O(1)
      B. Time O(n log n), Space O(n)
      C. Time O(n), Space O(n)
      D. Time O(n), Space O(1)

      Solution

      1. Step 1: Time

        Single pass through string: O(n). Each character: one push or one pop - O(1) each. Total: O(n).
      2. Step 2: Space

        Stack can hold up to n/2 characters in worst case '((((...)))'. Space: O(n).
      3. Final Answer:

        Time O(n), Space O(n). -> Option C
      4. Quick Check:

        One pass = O(n). Stack = O(n) worst case. [OK]
      Hint: Balanced parentheses: O(n) time (one pass), O(n) space (stack). [OK]
      Common Mistakes:
      • Saying O(1) space - stack can grow to O(n)
      • Saying O(n²) - only one pass needed
      • Confusing with sorting-based approaches
      5. Which TypeScript code correctly implements the balanced parentheses check?
      hard
      A. return s.split('').filter(c => '({['.includes(c)).length === s.split('').filter(c => ')}]'.includes(c)).length;
      B. const stack: string[] = []; const map: Record = {')':'(', ']':'[', '}':'{'}; for (const c of s) { if ('([{'.includes(c)) stack.push(c); else if (stack.pop() !== map[c]) return false; } return stack.length === 0;
      C. let count = 0; for (const c of s) { if (c === '(') count++; else count--; if (count < 0) return false; } return count === 0;
      D. return s.length % 2 === 0;

      Solution

      1. Step 1: Map for bracket pairs

        map pairs each closing bracket to its expected opening. On close: pop stack and check it matches map[c].
      2. Step 2: Final check

        stack.length === 0 ensures no unmatched opening brackets remain.
      3. Why A fails

        Only counts, doesn't check types or order.
      4. Why C fails

        Counter only works for '()' - fails for '([)]' or mixed types.
      5. Final Answer:

        Option B - map + stack with type checking. -> Option B
      6. Quick Check:

        Map + stack + empty check at end = correct solution. [OK]
      Hint: Use map {')':'(', ']':'[', '}':'{'} + stack. Pop on close, check match. Return stack.length===0. [OK]
      Common Mistakes:
      • Using count only (fails mixed brackets)
      • Not checking stack empty at end (unmatched opens)
      • Not using a map for bracket pairs
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard