import java.util.Stack; class Demo { static boolean isOpen (char c) { return c == '(' || c == '{'; } static boolean isClose (char c) { return c == ')' || c == '}'; } static boolean matchingBracket (char open, char close) { return open == '(' && close == ')' || open == '{' && close == '}'; } static boolean isBalanced(String s) { Stack stk = new Stack(); for (int i = 0; i < s.length(); i++) { char sym = s.charAt(i); if (isOpen(sym)) stk.push(new Character(sym)); else if (isClose(sym)) { if (stk.empty()) return false; char open = ((Character)(stk.pop())).charValue(); if (!matchingBracket(open, sym)) return false; } } return stk.empty(); } public static void main (String[] args) { System.out.print("The string " + args[0]); if (isBalanced(args[0])) System.out.println(" is balanced"); else System.out.println(" is not balanced"); /* System.out.println("() " + isBalanced("()")); System.out.println("({)} " + isBalanced("({)}")); System.out.println("(()()){} " + isBalanced("(()()){}")); */ } }