import java.util.ArrayDeque; import java.util.Deque; public class BalancedBrackets { public static boolean areSquareBracketsBalanced(String expr) { return isBalanced(expr, "", "", "[", "]", false); } public static boolean areBracketsBalanced(String expr) { return isBalanced(expr, "", "", "{([", "})]", false); } public static boolean areStringAndBracketsBalanced(String expr) { return isBalanced(expr, "'\"", "\\\\", "{([", "})]", true); } public static boolean isBalanced(String expr, String lit, String esc, String obr, String cbr, boolean other) { boolean[] inLit = new boolean[lit.length()]; Deque stack = new ArrayDeque(); for (int i=0; i