logo CodeStepByStep logo

check_balance

Language/Type: PHP stack collections string

Write a function named check_balance that accepts a string of source code and uses an array stack to check whether the braces/parentheses are balanced. Every ( or [ must be closed by a ] or ) in the opposite order. Return the index at which an imbalance occurs, or -1 if the string is balanced. If any ( or [ are never closed, return the string's length.

Here are some example calls:

//    index   0123456789012345678901234567890
check_balance("if (a(4) > 9) { foo(a(2)); }")     // returns -1 because balanced
check_balance("for (i=0;i<a(3};i++) { foo{); )")  // returns 14 because } out of order
check_balance("while (true) foo(); }{ ()")        // returns 20 because } doesn't match any {
check_balance("if (x) {")                         // returns 9 because { is never closed

Constraints: Use a single array stack as auxiliary storage.

Function: Write a PHP function as described, not a complete program.

You must log in before you can solve this problem.

Log In

Need help?

Stuck on an exercise? Contact your TA or instructor.

If something seems wrong with our site, please

Is there a problem? Contact us.