Как проверить скобки через стандартные коллекции Java

Для проверки подходит стек на базе Deque и ArrayDeque: открывающую скобку кладём в стек, закрывающую сравниваем с последней открытой. В конце стек должен быть пуст.

Короткий ответ

Что ответить на собеседовании

Для проверки подходит стек на базе Deque и ArrayDeque: открывающую скобку кладём в стек, закрывающую сравниваем с последней открытой. В конце стек должен быть пуст.

Подробный разбор

Ответ с пояснениями

Условие

Напишите метод Java, который проверяет правильность скобочной последовательности из символов ()[]{}. Любые другие символы считаются ошибкой. Пустая строка корректна, null — некорректен. Используйте стандартные коллекции.

Ответ

Для проверки подходит стек на базе Deque и ArrayDeque: открывающую скобку кладём в стек, закрывающую сравниваем с последней открытой. В конце стек должен быть пуст.

Метод можно поместить в класс с импортами java.util.Deque и java.util.ArrayDeque:

static boolean balanced(String text) {
    if (text == null) return false;
    Deque<Character> stack = new ArrayDeque<>();
    for (char c : text.toCharArray()) {
        if (c == '(' || c == '[' || c == '{') {
            stack.push(c);
        } else {
            char expected;
            if (c == ')') expected = '(';
            else if (c == ']') expected = '[';
            else if (c == '}') expected = '{';
            else return false;
            if (stack.isEmpty() || stack.pop() != expected) return false;
        }
    }
    return stack.isEmpty();
}

Проверки: ([]) → true, ([)] → false, (( → false. Каждый символ обрабатывается один раз: O(n) времени и до O(n) памяти. push и pop работают с одним концом дека, обеспечивая порядок LIFO.

Источник: docs.oracle.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее