functionisPalindrome(str) {
const s = str.toLowerCase().replace(/[^\p{L}\p{N}]/gu, '');
let i = 0;
let j = s.length - 1;
while (i < j) {
if (s[i] !== s[j]) returnfalse;
i++;
j--;
}
returntrue;
}
isPalindrome('А роза упала на лапу Азора'); // true
Или s === [...s].reverse().join('') после нормализации.
Итог
Нормализация + сравнение с концов — O(n) по времени.