Sha256: 660fdadf8e596d86127efbfc8c3332d6355167fd549f994d90c66e9a4661e1ea

Contents?: true

Size: 1.25 KB

Versions: 373

Compression:

Stored size: 1.25 KB

Contents

import java.util.*;

final class BracketChecker {

    private static final Map<Character, Character> BRACKET_PAIR_MAP = new HashMap<Character, Character>() {{
        put('[', ']');
        put('{', '}');
        put('(', ')');
    }};

    private static boolean isOpeningBracket(final char character) {
        return BRACKET_PAIR_MAP.keySet().contains(character);
    }

    private static boolean isClosingBracket(final char character) {
        return BRACKET_PAIR_MAP.values().contains(character);
    }

    private final String expression;

    BracketChecker(final String expression) {
        this.expression = expression;
    }

    boolean areBracketsMatchedAndNestedCorrectly() {
        final Stack<Character> bracketsStack = new Stack<>();

        for (final char character : expression.toCharArray()) {
            if (isOpeningBracket(character)) {
                bracketsStack.push(character);
            } else if (isClosingBracket(character)) {
                if (bracketsStack.isEmpty()) {
                    return false;
                }

                if (!BRACKET_PAIR_MAP.get(bracketsStack.pop()).equals(character)) {
                    return false;
                }
            }
        }

        return bracketsStack.isEmpty();
    }

}

Version data entries

373 entries across 373 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.179 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.178 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.177 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.176 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.175 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.174 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.173 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.172 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.171 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.170 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.169 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.167 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.166 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.165 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.164 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.163 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.162 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.161 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java
trackler-2.2.1.160 tracks/java/exercises/bracket-push/.meta/src/reference/java/BracketChecker.java