logo CodeStepByStep logo

check_balance

Language/Type: Python list collections string

Write a function named check_balance that accepts a string of source code and uses a list 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=0i&lta(3}i += 1): foo{) )")   # returns 14 because } out of order
check_balance("while True) foo() }{ ()"         # returns 20 because } doesn't match any {
check_balance("if x:")                          # returns 8 because { is never closed

Constraints: Use a single stack as auxiliary storage.

Type your Python solution code here:

This is a function exercise. Write a Python 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

Need help?

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

Is there a problem? Contact a site administrator.

©, all rights reserved.