diff --git a/data_structures/Stacks/BalancedBrackets.java b/data_structures/Stacks/BalancedBrackets.java
index d0e9ef9c5..1a8673d6f 100644
--- a/data_structures/Stacks/BalancedBrackets.java
+++ b/data_structures/Stacks/BalancedBrackets.java
@@ -1,59 +1,89 @@
-/*
+package data_structures.Stacks;
-The nested brackets problem is a problem that determines if a sequence of
-brackets are properly nested. A sequence of brackets s is considered properly nested
-if any of the following conditions are true:
- - s is empty
- - s has the form (U) or [U] or {U} where U is a properly nested string
- - s has the form VW where V and W are properly nested strings
-For example, the string "()()[()]" is properly nested but "[(()]" is not.
-The function called is_balanced takes as input a string S which is a sequence of brackets and
-returns true if S is nested and false otherwise.
-
- author: akshay sharma
- date: 2017-10-17
-*/
import java.util.Scanner;
import java.util.Stack;
-import java.util.ArrayList;
+/**
+ *
+ * The nested brackets problem is a problem that determines if a sequence of
+ * brackets are properly nested. A sequence of brackets s is considered properly
+ * nested if any of the following conditions are true: - s is empty - s has the
+ * form (U) or [U] or {U} where U is a properly nested string - s has the form
+ * VW where V and W are properly nested strings For example, the string
+ * "()()[()]" is properly nested but "[(()]" is not. The function called
+ * is_balanced takes as input a string S which is a sequence of brackets and
+ * returns true if S is nested and false otherwise.
+ *
+ * @author akshay sharma
+ * @date: 2017-10-17
+ * @author khalil2535
+ *
+ */
class BalancedBrackets {
- static boolean is_balanced(char[] S) {
- Stack stack = new Stack<>();
- String pair = "";
- for (int i = 0; i < S.length; ++i) {
- if (S[i] == '(' || S[i] == '{' || S[i] == '[') {
- stack.push(S[i]);
- } else if (stack.size() > 0) {
- if (!pair.equals("[]") && !pair.equals("()") && !pair.equals("{}")) {
- return false;
- }
- } else {
- return false;
+ /**
+ *
+ * @param s
+ * @return
+ */
+ static boolean is_balanced(String s) {
+ Stack bracketsStack = new Stack<>();
+ char[] text = s.toCharArray();
+ for (char x : text) {
+ switch (x) {
+ case '{':
+ case '<':
+ case '(':
+ case '[':
+ bracketsStack.push(x);
+ break;
+ case '}':
+ if (bracketsStack.peek() == '{') {
+ bracketsStack.pop();
+ break;
+ } else {
+ return false;
+ }
+ case '>':
+ if (bracketsStack.peek() == '<') {
+ bracketsStack.pop();
+ break;
+ } else {
+ return false;
+ }
+ case ')':
+ if (bracketsStack.peek() == '(') {
+ bracketsStack.pop();
+ break;
+ } else {
+ return false;
+ }
+ case ']':
+ if (bracketsStack.peek() == '[') {
+ bracketsStack.pop();
+ break;
+ } else {
+ return false;
+ }
}
}
-
- return stack.isEmpty();
- }
-
- static void print(Object a) {
- System.out.println(a);
+ return bracketsStack.empty();
}
+ /**
+ *
+ * @param args
+ * @TODO remove main method and Test using JUnit or other methodology
+ */
public static void main(String args[]) {
- try {
- Scanner in = new Scanner(System.in);
- print("Enter sequence of brackets: ");
- String S = in.nextLine();
- if (is_balanced(S.toCharArray())) {
- print(S + " is balanced");
+ try (Scanner in = new Scanner(System.in)) {
+ System.out.println("Enter sequence of brackets: ");
+ String s = in.nextLine();
+ if (is_balanced(s)) {
+ System.out.println(s + " is balanced");
} else {
- print(S + " ain't balanced");
+ System.out.println(s + " ain't balanced");
}
- in.close();
- } catch (Exception e) {
- e.toString();
}
}
}