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?
Opening characters like '(', '{', '[' and their matching closing characters ')', '}', ']' are checked.
Click to reveal answer
beginner
What happens if the stack is empty when a closing parenthesis is found?
It means there is no matching opening parenthesis, so the parentheses are not balanced.
Click to reveal answer
beginner
Why do we check if the stack is empty at the end of the algorithm?
If the stack is not empty, it means there are unmatched opening parentheses left, so the expression is unbalanced.
Click to reveal answer
intermediate
How does the algorithm handle nested parentheses like '{[()]}'?
The stack stores opening parentheses in order. When a closing parenthesis appears, it matches with the last opening one, correctly handling nesting.
Click to reveal answer
What data structure is best suited for checking balanced parentheses?
ALinked List
BQueue
CArray
DStack
✗ Incorrect
A stack follows Last-In-First-Out order, which matches the way parentheses must be closed.
What should you do when you encounter an opening parenthesis in the string?
APop from the stack
BIgnore it
CPush it onto the stack
DReplace it with a closing parenthesis
✗ Incorrect
Opening parentheses are pushed onto the stack to wait for matching closing parentheses.
If the stack is empty but a closing parenthesis is found, what does it mean?
AParentheses are balanced
BThere is an unmatched closing parenthesis
CThere is an unmatched opening parenthesis
DThe string is empty
✗ Incorrect
A closing parenthesis without a matching opening one means unbalanced parentheses.
What does it mean if the stack is not empty after processing the entire string?
AThere are unmatched opening parentheses
BThe string is empty
CThere are unmatched closing parentheses
DAll parentheses matched
✗ Incorrect
Remaining items in the stack mean some opening parentheses were not closed.
Which of these strings is balanced?
A({[]})
B({[})
C({[)
D({])}
✗ Incorrect
Only '({[]})' has all parentheses correctly opened and closed in order.
Explain step-by-step how a stack helps check if parentheses are balanced in a string.
Think about how you keep track of open parentheses and match them with closing ones.
You got /4 concepts.
Describe what conditions make a string of parentheses unbalanced when using a stack.
Consider what happens when you find a closing parenthesis but no matching opening one.
You got /3 concepts.
Practice
(1/5)
1. What is the main purpose of using a stack to solve the Balanced Parentheses Problem?
easy
A. To sort the parentheses in order
B. To count the total number of parentheses in the string
C. To reverse the string of parentheses
D. To keep track of opening parentheses and match them with closing ones
Solution
Step 1: Understand the role of stack in matching parentheses
A stack helps store opening parentheses as they appear, so we can check if each closing parenthesis matches the last opened one.
Step 2: Explain why other options are incorrect
Counting or reversing parentheses does not help check if they are balanced. Sorting changes order and breaks the original sequence.
Final Answer:
To keep track of opening parentheses and match them with closing ones -> Option D
Quick Check:
Stack tracks openings for matching [OK]
Hint: Stack stores openings to match closings quickly [OK]
Common Mistakes:
Thinking stack counts parentheses instead of matching
Assuming reversing string solves balance
Confusing sorting with balancing
2. Which of the following is the correct way to push an element onto a stack in JavaScript?
easy
A. stack.add(element);
B. stack.push(element);
C. stack.insert(element);
D. stack.append(element);
Solution
Step 1: Recall JavaScript array method for adding elements at the end
JavaScript arrays use push() to add elements to the end, which simulates stack push.
Step 2: Identify incorrect methods
add(), insert(), and append() are not valid JavaScript array methods.
Final Answer:
stack.push(element); -> Option B
Quick Check:
Use push() to add to stack [OK]
Hint: Use push() to add elements to stack in JavaScript [OK]
Common Mistakes:
Using add() or append() which are not JavaScript array methods
Confusing push() with pop()
Trying to use insert() which doesn't exist
3. What will be the output of the following JavaScript code snippet?
function isBalanced(s) {
const stack = [];
for (const char of s) {
if (char === '(') stack.push(char);
else if (char === ')') {
if (stack.length === 0) return false;
stack.pop();
}
}
return stack.length === 0;
}
console.log(isBalanced('(()())'));
console.log(isBalanced('(()'));
console.log(isBalanced(')('));
medium
A. true, true, false
B. false, true, false
C. true, false, false
D. false, false, true
Solution
Step 1: Trace the function for each input string
For '(()())': all parentheses match, stack ends empty, returns true. For '(()': one '(' remains unmatched, returns false. For ')(': first char is ')', stack empty, returns false.
Step 2: Confirm outputs match true, false, false
Outputs are true, false, false respectively.
Final Answer:
true, false, false -> Option C
Quick Check:
Stack empty at end means balanced [OK]
Hint: Stack empty at end means balanced parentheses [OK]
Common Mistakes:
Assuming unmatched openings are balanced
Ignoring early unmatched closing parentheses
Confusing true/false outputs
4. The following code is intended to check balanced parentheses but has a bug. What is the bug?
function checkBalance(str) {
const stack = [];
for (let i = 0; i < str.length; i++) {
if (str[i] === '(') {
stack.push('(');
} else {
if (stack.length === 0) return false;
stack.pop();
}
}
return true;
}
medium
A. It returns true even if stack is not empty after loop
B. It pushes closing parentheses instead of opening
C. It does not check for closing parentheses
D. It uses wrong loop syntax
Solution
Step 1: Analyze the return statement after loop
The function returns true without checking if stack is empty, so leftover '(' are ignored.
Step 2: Explain why this causes incorrect results
If there are unmatched '(' left in stack, string is unbalanced but function returns true incorrectly.
Final Answer:
It returns true even if stack is not empty after loop -> Option A
Quick Check:
Check stack.length === 0 before return true [OK]
Hint: Always check stack empty before returning true [OK]
Common Mistakes:
Forgetting to check stack length after loop
Returning true too early
Ignoring unmatched opening parentheses
5. Given the string s = '{[()]}', which modification is needed in the stack-based balanced parentheses algorithm to correctly check this string?
hard
A. Add support for matching pairs of '()', '{}', and '[]' with stack push/pop logic
B. Ignore all characters except '(' and ')' during stack operations
C. Use two separate stacks for different types of brackets
D. Reverse the string before checking with the existing algorithm
Solution
Step 1: Understand the input string contains multiple bracket types
The string has '()', '{}', and '[]' brackets, so the algorithm must handle all types.
Step 2: Explain how to handle multiple bracket types with one stack
Push opening brackets onto stack, and on closing bracket, check if it matches the last opening bracket type before popping.
Final Answer:
Add support for matching pairs of '()', '{}', and '[]' with stack push/pop logic -> Option A
Quick Check:
One stack handles all bracket types [OK]
Hint: Match each closing bracket with last opening bracket type [OK]
Common Mistakes:
Ignoring bracket types other than parentheses
Using multiple stacks unnecessarily
Reversing string instead of matching pairs
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.