Q10: How do you validate balanced brackets and parentheses using a Stack?
Traverse the string character by character. When encountering an opening bracket ((, {, [), push its corresponding matching closing bracket onto a Deque<Character> stack. When encountering a closing bracket, check if the stack is empty or if the popped element matches. Return stack.isEmpty() at the end.
Stack Parentheses Validation
import java.util.ArrayDeque;
import java.util.Deque;
public class ValidParentheses {
public static boolean isValid(String s) {
Deque<Character> stack = new ArrayDeque<>();
for (char c : s.toCharArray()) {
if (c == '(') stack.push(')');
else if (c == '{') stack.push('}');
else if (c == '[') stack.push(']');
else if (stack.isEmpty() || stack.pop() != c) return false;
}
return stack.isEmpty();
}
}💡 Pushing expected closing brackets makes matching simple.
Key Takeaways
- Push expected closing characters to simplify validation logic.
- Return
stack.isEmpty()to handle unclosed opening brackets.
Knowledge Check
What is the stack state when processing an invalid input string with unmatched opening brackets like "((("?