1. Problem Statement (Simple Explanation):
You're given a string s containing only these characters:
'(' , ')' , '{' , '}' , '[' , ']'
You must determine if s is a valid parentheses string.
A string is valid if:
Every opening bracket has a matching closing bracket of the same type.
Brackets are closed in the correct order (properly nested).
No extra closing brackets appear without a matching opening bracket.
Return true if valid, otherwise false.
2. Examples:
Example 1:
Input: s = "()"
Output: true
Example 2:
Input: s = "()[]{}"
Output: true
Explanation: "()", "[]", and "{}" are all valid and appear in correct order.
Example 3:
Input: s = "(]"
Output: false
Explanation: ( must be closed by ), not ].
Example 4:
Input: s = "([])"
Output: true
Explanation: Proper nesting: "(" + "[]" + ")".
Example 5:
Input: s = "([)]"
Output: false
Explanation: Order is wrong; '(' is closed after ']', not after ')'.
3. Approach – Stack (Standard Solution):
This is a classic stack problem.
Intuition:
Whenever we see an opening bracket ((, {, [), we push it onto the stack.
Whenever we see a closing bracket (), }, ]):
The stack must not be empty.
The top of the stack must be the matching opening bracket.
If so, we pop it.
Otherwise, the string is invalid.
At the end:
If the stack is empty, all brackets are properly matched → true.
If not empty, there are unmatched opening brackets → false.
We can also simplify checking by mapping closing → opening:
')' -> '('
']' -> '['
'}' -> '{'
Algorithm (Step-by-Step):
Initialize an empty stack.
For each character c in s:
if c is an opening bracket:
Push it onto the stack.
else (it’s a closing bracket):
if the stack is empty → return false.
Pop the top element from the stack.
If the popped element is not the correct matching opening bracket for c → return false.
After processing all characters:
if the stack is empty → return true.
else → return false.
Pseudo-code:
Let n = |s|:
Time: O(n) (each char is pushed/popped at most once).
Space: O(n) in worst case (all opening brackets on stack).
4. Java code:
6. C++ code:
7. Python code:
8.JavaScript code:






Comments
Post a Comment