Parentheses.java Parentheses.java Below is the syntax highlighted version of Parentheses.java from §4.3 Stacks and Queues. /******************************************************************************
* Compilation: javac Parentheses.java
* Execution: java Parentheses < file.txt
* Dependencies: StdIn.java Stack.java
*
* Reads in a text file and checks to see if the paretheses, curly
* braces, and square brackets are balanced.
*
* % java java Parentheses
* [()]{}{[()()]()}
* true
*
* % java Parentheses
* [(])
* false
*
******************************************************************************/
public class Parentheses {
private static final char L_PAREN = '(';
private static final char R_PAREN = ')';
private static final char L_BRACE = '{';
private static final char R_BRACE = '}';
private static final char L_BRACKET = '[';
private static final char R_BRACKET = ']';
public static boolean isBalanced(String s) {
Stack stack = new Stack();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == L_PAREN) stack.push(L_PAREN);
else if (s.charAt(i) == L_BRACE) stack.push(L_BRACE);
else if (s.charAt(i) == L_BRACKET) stack.push(L_BRACKET);
else if (s.charAt(i) == R_PAREN) {
if (stack.isEmpty()) return false;
if (stack.pop() != L_PAREN) return false;
}
else if (s.charAt(i) == R_BRACE) {
if (stack.isEmpty()) return false;
if (stack.pop() != L_BRACE) return false;
}
else if (s.charAt(i) == R_BRACKET) {
if (stack.isEmpty()) return false;
if (stack.pop() != L_BRACKET) return false;
}
// ignore all other characters
}
return stack.isEmpty();
}
public static void main(String[] args) {
String s = StdIn.readAll();
StdOut.println(isBalanced(s));
}
}
Copyright © 2000–2017, Robert Sedgewick and Kevin Wayne. Last updated: Fri Oct 20 14:12:12 EDT 2017.