Skip to content

Instantly share code, notes, and snippets.

@mhewedy
Created April 21, 2018 08:34
Show Gist options
  • Select an option

  • Save mhewedy/62f79d011c337bf9995bca741a705d74 to your computer and use it in GitHub Desktop.

Select an option

Save mhewedy/62f79d011c337bf9995bca741a705d74 to your computer and use it in GitHub Desktop.
BracketsBalanceChecker
import java.util.ArrayDeque;
import java.util.Deque;
public class BracketsBalanceChecker {
public static void main(String[] args) {
System.out.println(isBalanced("[()]{}{[()()]()}"));
System.out.println(isBalanced("[(])"));
}
static boolean isBalanced(String input) {
char[] chars = input.toCharArray();
Deque<Character> stack = new ArrayDeque<>();
for (char ch : chars) {
if (stack.isEmpty() && isCloser(ch)) {
return false;
}
if (isCloser(ch)) {
Character topChar = stack.peek();
if (isCloser(ch, topChar)) {
stack.pop();
} else {
return false;
}
} else {
stack.push(ch);
}
}
return stack.isEmpty();
}
private static boolean isCloser(char closeBracket) {
return isCloser(closeBracket, '\0');
}
private static boolean isCloser(char closeBracket, char openBracket) {
switch (closeBracket) {
case ']':
return openBracket == '[' || openBracket == '\0';
case '}':
return openBracket == '{' || openBracket == '\0';
case ')':
return openBracket == '(' || openBracket == '\0';
default:
return false;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment