logo CodeStepByStep logo

checkBalance

Language/Type: C++ Stack collections
Related Links:
Author: Marty Stepp (on 2016/06/16)

Write a function named checkBalance that accepts a string of source code and uses a 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
checkBalance("if (a(4) > 9) { foo(a(2)); }")      // returns -1 because balanced
checkBalance("for (i=0;i<a(3};i++) { foo{); )")   // returns 14 because } out of order
checkBalance("while (true) foo(); }{ ()")         // returns 20 because } doesn't match any {
checkBalance("if (x) {")                          // returns 8 because { is never closed

Constraints: Use a single stack as auxiliary storage.

Type your solution here:


This is a function problem. Write a C++ function as described. Do not write a complete program; just the function(s) above.

You must log in before you can solve this problem.


Log In

If you do not understand how to solve a problem or why your solution doesn't work, please contact your TA or instructor.
If something seems wrong with the site (errors, slow performance, incorrect problems/tests, etc.), please

Is there a problem? Contact a site administrator.

© Marty Stepp, all rights reserved.