Войти Регистрация
Алгоритмы

155. Проверка разметки в описании объявления

Средняя

Продавец оформляет описание объявления простыми тегами. Дана строка text. Тег — это <имя> (открывающий), </имя> (закрывающий) или <имя/> (одиночный), где имя — одна или больше строчных латинских букв.

Разметка правильная, если каждый символ < начинает правильный тег, символ > встречается только как конец тега, каждый закрывающий тег закрывает последний ещё не закрытый открывающий с тем же именем, и в конце все теги закрыты.

Остальной текст — любые символы, кроме < и >. Верните True, если разметка правильная.

В работе: Модерация описаний на Авито: битая разметка ломает карточку объявления в мобильном приложении, такие описания возвращают продавцу до публикации.

Пример 1

Ввод
text = "<b>Диван</b><br/><i>2 м, <u>новый</u></i>"
Вывод
True

Вложенность правильная, `<br/>` закрывать не нужно.

Пример 2

Ввод
text = "<b><i>скидка</b></i>"
Вывод
False

Теги пересекаются: `</b>` пришёл, когда открыт `<i>`.

Ограничения

  • 0 ≤ длина text ≤ 10⁵
  • Лимит — 2 с на тест (1500 мс).
Как вызывается ваш код Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула. print() и console.log() уходят в консоль.
def markup_ok(text):
СтекСтрокиВалидацияцельO(n)

Источник: наша задача на данных Авито. Условие пересказано своими словами.