Back to questions
Junior — Middle
70
Как реализовать проверку правильности расстановки скобок в строке, используя задачу Valid Parentheses на LeetCode?
Companies where asked
Актив
Answer from AI
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()
}
Этот метод эффективно проверяет корректность вложенности и соответствия скобок.