...

/

Solution Review: Balance Parenthesis

Solution Review: Balance Parenthesis

This review provides a detailed analysis of the solution to determine whether or not an array contains balanced parenthesis.

Solution: Using Recursion

Press + to interact
function balanced(testVariable, startIndex = 0, currentIndex = 0) {
// Base case1 and 2
if (startIndex == testVariable.length) {
return currentIndex == 0
}
// Base case3
if (currentIndex < 0) { // A closing parenthesis did not find its corresponding opening parenthesis
return false
}
// Recursive case1
if (testVariable[startIndex] == "(") {
return balanced(testVariable, startIndex + 1, currentIndex + 1)
}
// Recursive case2
else if (testVariable[startIndex] == ")") {
return balanced(testVariable, startIndex + 1, currentIndex - 1)
}
else {
return false // the string contained an unrecognized character
}
}
// Driver Code
testVariable = ["(", "(", ")", ")", "(", ")"]
console.log("The array [\"(\", \"(\", \")\", \")\", \"(\", \")\"] is balanced: " + balanced(testVariable))
testVariable = ["(", "(", ")"]
console.log("The array [\"(\", \"(\", \")\"] is balanced: " + balanced(testVariable))

Explanation

Our task is to read an array of parentheses from left to right and decide whether the symbols are balanced.

To solve this problem, notice that the most recent opening parenthesis ...