Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App

Related Articles

Java Program To Check For Balanced Brackets In An Expression (Well-Formedness) Using Stack

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given an expression string exp, write a program to examine whether the pairs and the orders of “{“, “}”, “(“, “)”, “[“, “]” are correct in exp.


Input: exp = “[()]{}{[()()]()}” 
Output: Balanced

Input: exp = “[(])” 
Output: Not Balanced 



  • Declare a character stack S.
  • Now traverse the expression string exp. 
    1. If the current character is a starting bracket (‘(‘ or ‘{‘ or ‘[‘) then push it to stack.
    2. If the current character is a closing bracket (‘)’ or ‘}’ or ‘]’) then pop from stack and if the popped character is the matching starting bracket then fine else brackets are not balanced.
  • After complete traversal, if there is some starting bracket left in stack then “not balanced”

Below image is a dry run of the above approach:

Below is the implementation of the above approach:


// Java program for checking
// balanced brackets
import java.util.*;
public class BalancedBrackets {
    // function to check if brackets are balanced
    static boolean areBracketsBalanced(String expr)
        // Using ArrayDeque is faster than using Stack class
        Deque<Character> stack
            = new ArrayDeque<Character>();
        // Traversing the Expression
        for (int i = 0; i < expr.length(); i++) 
            char x = expr.charAt(i);
            if (x == '(' || x == '[' || x == '{'
                // Push the element in the stack
            // If current character is not opening
            // bracket, then it must be closing. So stack
            // cannot be empty at this point.
            if (stack.isEmpty())
                return false;
            char check;
            switch (x) {
            case ')':
                check = stack.pop();
                if (check == '{' || check == '[')
                    return false;
            case '}':
                check = stack.pop();
                if (check == '(' || check == '[')
                    return false;
            case ']':
                check = stack.pop();
                if (check == '(' || check == '{')
                    return false;
        // Check Empty Stack
        return (stack.isEmpty());
    // Driver code
    public static void main(String[] args)
        String expr = "([{}])";
        // Function call
        if (areBracketsBalanced(expr))
            System.out.println("Balanced ");
            System.out.println("Not Balanced ");



Time Complexity: O(n) 
Auxiliary Space: O(n) for stack. 

Please refer complete article on Check for Balanced Brackets in an expression (well-formedness) using Stack for more details!

My Personal Notes arrow_drop_up
Last Updated : 14 Dec, 2021
Like Article
Save Article
Similar Reads
Related Tutorials