020. Valid Parentheses
At a Glance
- Topic: Stack
- Pattern: Stack
- Difficulty: Easy
- LeetCode: 020
Problem Statement
Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Every close bracket has a corresponding open bracket of the same type.Example 1:
Input: s = "()"
Output: true
Example 2:
Input: s = "()[]{}"
Output: true
Example 3:
Input: s = "(]"
Output: false
Example 4:
Input: s = "([])"
Output: true
Example 5:
Input: s = "([)]"
Output: false
Constraints:
1 <= s.length <= 104
s consists of parentheses only '()[]{}'.Approach & Solution Steps
Use a stack to keep track of opening brackets. Iterate through the string. If it's an opening bracket, push to stack. If closing, pop from stack and check if it matches the current closing bracket.
Optimal JS Solution
function isValid(s) {
const stack = [];
const map = { ')': '(', '}': '{', ']': '[' };
for (const char of s) {
if (!map[char]) {
stack.push(char);
} else if (stack.pop() !== map[char]) {
return false;
}
}
return stack.length === 0;
}Edge Cases & Pitfalls
- Always consider empty or null inputs.
- Watch out for off-by-one index errors.
Mark this page when you finish learning it.
Last updated on
Spotted something unclear or wrong on this page?