Для LeetCode 125 нужно игнорировать регистр и неалфавитно-цифровые ASCII-символы, затем сравнить строку с двух концов.
LeetCode #125 — Напиши функцию, которая определяет, является ли строка палиндромом: одинаково ли она читается с начала и с конца.
Для 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.