lots of exercises in java... from https://github.com/exercism/java

BracketChecker.java 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import java.util.*;
  2. final class BracketChecker {
  3. private static final Map<Character, Character> BRACKET_PAIR_MAP = new HashMap<Character, Character>() {{
  4. put('[', ']');
  5. put('{', '}');
  6. put('(', ')');
  7. }};
  8. private static boolean isOpeningBracket(final char character) {
  9. return BRACKET_PAIR_MAP.keySet().contains(character);
  10. }
  11. private static boolean isClosingBracket(final char character) {
  12. return BRACKET_PAIR_MAP.values().contains(character);
  13. }
  14. private final String expression;
  15. BracketChecker(final String expression) {
  16. this.expression = expression;
  17. }
  18. boolean areBracketsMatchedAndNestedCorrectly() {
  19. final Stack<Character> bracketsStack = new Stack<>();
  20. for (final char character : expression.toCharArray()) {
  21. if (isOpeningBracket(character)) {
  22. bracketsStack.push(character);
  23. } else if (isClosingBracket(character)) {
  24. if (bracketsStack.isEmpty()) {
  25. return false;
  26. }
  27. if (!BRACKET_PAIR_MAP.get(bracketsStack.pop()).equals(character)) {
  28. return false;
  29. }
  30. }
  31. }
  32. return bracketsStack.isEmpty();
  33. }
  34. }