Sobes.tech
Junior — Middle

Wie implementiert man eine Überprüfung der korrekten Platzierung von Klammern in einer Zeichenkette, unter Verwendung des Problems Valid Parentheses auf LeetCode?

sobes.tech KI

Antwort von 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()
}

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