Sobes.tech
Назад к вопросам
Junior — Middle
69

Как реализовать проверку правильности расстановки скобок в строке, используя задачу Valid Parentheses на LeetCode?

Компании, где спрашивали
Актив

Ответ от нейросети

sobes.tech AI

Для проверки правильности расстановки скобок в строке можно использовать стек. Идея в том, чтобы проходить по символам строки и:

  • Если символ — открывающая скобка (например, '(', '{', '['), положить её в стек.
  • Если символ — закрывающая скобка, проверить, что верхний элемент стека — соответствующая открывающая скобка. Если да, извлечь её из стека, иначе строка некорректна.

В конце, если стек пуст, значит все скобки корректно закрыты.

Пример на Java/Kotlin:

fun isValid(s: String): Boolean {
    val stack = mutableListOf<Char>()
    val pairs = mapOf(')' to '(', ']' to '[', '}' to '{')

    for (char in s) {
        if (char in pairs.values) {
            stack.add(char)
        } else if (char in pairs.keys) {
            if (stack.isEmpty() || stack.removeAt(stack.size - 1) != pairs[char]) {
                return false
            }
        }
    }
    return stack.isEmpty()
}

Этот метод эффективно проверяет корректность вложенности и соответствия скобок.