Дана строка, содержащая символы (){}.

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

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

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

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

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

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

Условие

Дана строка, содержащая символы (){}.

Нужно определить, является ли входная строка сбалансированной с точки зрения скобок.

Ответ

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

func isBalanced(s string) bool {
    stack := make([]rune, 0)
    for _, r := range s {
        switch r {
        case '(', '{':
            stack = append(stack, r)
        case ')', '}':
            if len(stack) == 0 { return false }
            open := stack[len(stack)-1]
            if (r == ')' && open != '(') || (r == '}' && open != '{') {
                return false
            }
            stack = stack[:len(stack)-1]
        default:
            return false
        }
    }
    return len(stack) == 0
}

Пустая строка сбалансирована. Посторонние символы здесь отклоняются согласно алфавиту условия; если их нужно игнорировать, изменяется default. Время O(n), память O(n) в худшем случае.

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

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

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

Подробнее