LeetCode #125 — Напиши функцию, которая определяет, является ли строка палиндромом: одинаково ли она читается с начала и с конца.

Для LeetCode 125 нужно игнорировать регистр и неалфавитно-цифровые ASCII-символы, затем сравнить строку с двух концов.

Короткий ответ

Что ответить на собеседовании

Для LeetCode 125 нужно игнорировать регистр и неалфавитно-цифровые ASCII-символы, затем сравнить строку с двух концов.

Подробный разбор

Ответ с пояснениями

Для LeetCode 125 нужно игнорировать регистр и неалфавитно-цифровые ASCII-символы, затем сравнить строку с двух концов.

function isPalindrome(s) {
  let left = 0, right = s.length - 1;
  const valid = char => /[a-z0-9]/i.test(char);
  while (left < right) {
    if (!valid(s[left])) { left++; continue; }
    if (!valid(s[right])) { right--; continue; }
    if (s[left].toLowerCase() !== s[right].toLowerCase()) return false;
    left++; right--;
  }
  return true;
}

Время O(n), дополнительная память O(1). Строка без значимых символов считается палиндромом. Для задачи с произвольными языками отдельно определяют нормализацию Unicode и правила сравнения.

Источник: leetcode.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее