logo CodeStepByStep logo

checkBalance

Language/Type: C++ stack collections STL
Related Links:

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.

Function: Write a C++ 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.