Выбор ответа Junior Стек и монотонный стек обновлено

Краевой случай в скобках

Вопрос

На каком входе функция вернёт неверный ответ?

function valid(s) {
  const pair = { ')': '(', ']': '[', '}': '{' };
  const stack = [];
  for (const ch of s) {
    if (ch in pair) {
      if (stack.pop() !== pair[ch]) return false;
    } else stack.push(ch);
  }
  return true;
}

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: "((". Функция не проверяет, что стек пуст в конце: для "((" она вернёт true, хотя скобки не закрыты.

Варианты ответа

  1. "()"
  2. "([])"
  3. "(]"
  4. "(("правильный ответ

Разбор

Функция не проверяет, что стек пуст в конце: для "((" она вернёт true, хотя скобки не закрыты. Правильно: return stack.length === 0.

  • "()" и "([])" корректно дают true.
  • "(]" корректно даёт false: вершина ( не пара для ].

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме