Search This Blog

2023/12/06

Javascript Interview Question:Matching Parenthesis


Problem Statement:

Given a string s containing just the characters '(', ')', '{', '}', '['
and ']',determine if the input string is valid.

An input string is valid if:

1) Open brackets must be closed by the same type of brackets.
2) Open brackets must be closed in the correct order.
3) 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

Constraints:
1 <= s.length <= 104
s consists of parentheses only '()[]{}'.


Solution:
var str = "([{{([{([])}])}}]) [({})]";

function wellFormedBrackets(str) {
var circular = 0;
var rectangular = 0;
var curly = 0;

var brackets = {
"[": "]",
"(": ")",
"{": "}",
};

var lastOpening = [];
var lastOpeningChar = "";

for (var char of str) {
if (char == "[" || char == "(" || char == "{") {
lastOpening.push(char);

if (char == "[") {
rectangular++;
}
if (char == "{") {
curly++;
}
if (char == "(") {
circular++;
}
}

if (char == "]" || char == ")" || char == "}") {
lastOpeningChar = lastOpening.pop();
console.log("one:", lastOpeningChar);
console.log("two", char);

if (lastOpeningChar == undefined) {
console.log("No Opening brace");
return false;
} else {
if (brackets[lastOpeningChar] == char) {
if (char == "]") {
rectangular--;
}
if (char == "}") {
curly--;
}
if (char == ")") {
circular--;
}
} else {
console.log("Bracket are not properly nexted");
return false;
}
}
}
}

if (circular + rectangular + curly == 0) {
return true;
} else {
return false;
}
}

var result = wellFormedBrackets(str);
console.log("Result is", result);