Balancing a string using Stack in Java

Balance a string of parentheses. A balanced string would be something like these:
{}()
[{()}]
({()})

An unbalanced string would be something like these:
{}(
({)}
[[
}{

The code below uses the data structure Stack for determining if a string is balanced.

public class StringBalance {
 
    public static final String input[] = new String[]{
            "{}()",
            "[{()}]",
            "[[",
            "({()})",
            "{}("
    };

    public static boolean isBalanced(String s) {
        Stack stack = new Stack<>();
        int current;

        for (char c : s.toCharArray()) {
            if (c == '{' || c == '[' || c == '(') {
                stack.push((int) c);
            }
            if (c == '}' || c == ']' || c == ')') {
                if (stack.empty())
                    return false;
            }
            if (c == '}') {
                current = stack.pop();
                if ((char) current != '{')
                    return false;
            }
            if (c == ']') {
                current = stack.pop();
                if ((char) current != '[')
                    return false;
            }
            if (c == ')') {
                current = stack.pop();
                if ((char) current != '(')
                    return false;
            }
        }

        return stack.empty();
    }

    public static void main(String[] args) {
        for (int i = 0; i < input.length; i++) {
            System.out.println(input[i] + " " + isBalanced(input[i]));
        }
    }
}

Search within Codexpedia

Custom Search

Search the entire web

Custom Search