import java.util.Stack; public class SymbolsChecker { public static void main(String[] args) { test("(())"); test("()"); test("())"); test("(("); } public static void test(String s) { System.out.print(s + " is "); if (!symbolsBalanced(s)) { System.out.print("NOT "); } System.out.println("balanced"); } public static boolean symbolsBalanced(String s) { Stack symbols = new Stack(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '(' || c == '{') { symbols.push(c); } else if (c == ')' && (symbols.isEmpty() || symbols.pop() != '(')) { return false; } else if (c == '}' && (symbols.isEmpty() || symbols.pop() != '{')) { return false; } } return symbols.isEmpty(); } }