Valid Parentheses
Строка скобок сбалансирована, если каждая открывающая скобка закрывается скобкой того же вида, а пары вложены друг в друга, а не перекрываются. Есть три вида: круглые (), квадратные [] и фигурные {}.
Например, {[()()]} — сбалансированная строка: каждая пара закрывается внутри пары, в которую она вложена. А {(}) — нет: фигурная скобка закрывается, пока открытая после неё круглая скобка всё ещё ждёт закрытия. Строка вроде (( тоже не сбалансирована, потому что ничто не закрывает две открывающие скобки.
Напиши функцию с именем isValid, которая получает строку s, состоящую только из символов (, ), [, ], { и }, и возвращает true, если скобки в ней сбалансированы, и false в противном случае.
Скобки считаются сбалансированными, если каждая закрывающая скобка соответствует последней открывающей скобке, которая всё ещё не закрыта, они одного вида и в конце не остаётся незакрытых открывающих скобок.
Ограничения: 1 ≤ s.length ≤ 10^4.
Функция
- arg1string
- Возвращаетboolean
Примеры
- Ввод
- arg1 = "[]{}()"
- Вывод
- true
- Ввод
- arg1 = "{[()()]}"
- Вывод
- true
- Ввод
- arg1 = "{(})"
- Вывод
- false
+13 скрытых тестов при отправке
Подсказки
Открывайте по одной. Каждая подсказывает чуть больше.
Читайте строку слева направо. Когда встречается закрывающая скобка, какую открывающую скобку она может закрыть?
Она может закрыть только ту открывающую скобку, которая была открыта последней и всё ещё остаётся открытой. Последняя открытая — первая закрытая: именно такой порядок поддерживает стек.
Помещайте каждую открывающую скобку в стек. При встрече закрывающей скобки стек не должен быть пустым, а его верхний элемент должен быть скобкой того же типа; извлеките его из стека и продолжайте. Когда строка закончится, она сбалансирована только в том случае, если стек пуст.
Полный разбор этой задачи скоро появится.
Похожие задачи
Задачи на те же идеи. Решите две или три, и приём запомнится.
Python
def isValid(s):
# Напишите код здесьСлучай 1
Случай 2
Случай 3
Ввод
arg1 = "[]{}()"Ожидается
true