Valid Parentheses: A Guide to Checking Bracket Validity in JavaScript
Brackets are a fundamental part of programming languages and are used to group and structure code. In this blog post, we will explore the problem of determining whether a given string of brackets is valid or not using JavaScript. This problem is commonly referred to as the "Valid Parentheses" problem.
Understanding the Problem:
The problem statement provides a string that consists of three types of brackets: (
, )
, {
, }
, [
, and ]
. The task is to determine whether the brackets in the string are arranged in a valid manner. For a string to be valid, each opening bracket must have a corresponding closing bracket of the same type, and they must be arranged in the correct order.
For example, the strings "(){}[]"
and "{[()]}"
are valid, while "([)]"
and "{{]}"
are not.
Approach:
To solve this problem, we can use a stack data structure. The stack will help us keep track of the opening brackets encountered in the string. Whenever we encounter a closing bracket, we can check if the top of the stack contains the corresponding opening bracket. If it does, we pop the opening bracket from the stack; otherwise, the string is not valid.
Here's how the algorithm works:
- Initialize an empty stack.
- Iterate through each character in the string.
- If the character is an opening bracket (
(
,{
, or[
), push it onto the stack. - If the character is a closing bracket (
)
,}
, or]
), check if the stack is empty. If it is, the string is not valid. Otherwise, pop the top element from the stack and compare it to the current closing bracket. If they do not match, the string is not valid.
- If the character is an opening bracket (
- After iterating through the entire string, if the stack is empty, the string is valid; otherwise, it is not.
JavaScript Implementation:
function isValid(str) {
const stack = [];
const bracketPairs = {
')': '(',
'}': '{',
']': '['
};
for (let char of str) {
if (char === '(' || char === '{' || char === '[') {
stack.push(char);
} else {
if (stack.length === 0 || stack.pop() !== bracketPairs[char]) {
return false;
}
}
}
return stack.length === 0;
}
console.log(isValid("()")); // true
console.log(isValid("()[]{}")); // true
console.log(isValid("{[]}")); // true
console.log(isValid("(]")); // false
console.log(isValid("([)]")); // false
console.log(isValid("{{]}")); // false
console.log(isValid("[")); // false
console.log(isValid(")")); // false
console.log(isValid("")); // true (an empty string is considered valid)
console.log(isValid("[({})]")); // true
console.log(isValid("([{}])")); // true
console.log(isValid("{[()]}")); // true
console.log(isValid("({[)}")); // false
console.log(isValid("(([]){})")); // true
console.log(isValid("[")); // false
console.log(isValid("{[(")); // false
Demo:
Valid Parentheses Checker
Conclusion
The "Valid Parentheses" problem can be effectively solved using a stack data structure in JavaScript. By keeping track of the opening brackets encountered and comparing them to the corresponding closing brackets, we can determine whether a given string of brackets is valid or not. This problem showcases how fundamental data structures and algorithmic techniques can be applied to real-world scenarios in programming.
Other Challenges:
Comments
Post a Comment