Выбор ответа Junior Два указателя обновлено

Палиндром: найди ошибку

Вопрос

Функция проверяет палиндром. На какой строке она даёт неверный ответ?

function isPal(s) {
  let l = 0, r = s.length - 1;
  while (l < r) {
    if (s[l] !== s[r]) return false;
    l++; r--;
  }
  return true;
}

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

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

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

Коротко

Правильный ответ: Ошибок нет, всё верно. Указатели идут навстречу, пока l < r.

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

  1. Ошибок нет, всё верноправильный ответ
  2. На строке "aba"
  3. На пустой строке ""
  4. На строке "ab"

Разбор

Указатели идут навстречу, пока l < r. На средний символ нечётной строки сравнение не нужно, пустая строка и строка из одного символа сразу дают true, "ab" даёт false. Функция корректна.

  • "aba": сравнит a и a, потом l === r, вернёт true, это верно.
  • "": цикл не выполнится, пустая строка считается палиндромом.
  • "ab": вернёт false, и это правильно.

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

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