Palindrome Number - LeetCode

----- Условие ----- Требуется проверить, является ли число палиндромом. 121 - палиндром, 1321 - не палиндром. Отдельные случаи: * отрицательные числа не являются палиндромами; * числа, меньшие 10, являются палиндромами.

----- Решение ----- Решение сводится к полному разворачиванию числа X путем получения остатка при делении на 10 и добавления этого остатка в младшее звено числа reverseX со сдвигом влево. А далее обычное числовое сравнение. Числа, оканчивающиеся на 0, не могут быть палиндромами, так как 0 впереди числа не записывается. Сложность по времени O(n), где n - порядок числа, сложность по памяти O(1).

Стоит отметить, что для задачи просят решение без преобразования в строку. Для проверки, палиндром ли строка, можно выполнить сравнение: str === str.split(‘’).reverse().join(‘’).

----- Код ----- /**  * @param {number} x  * @return {boolean}  */ const isPalindrome = function(x) {   if (x < 10 && x >= 0) return true;     if (x < 0) return false;   if (x % 10 === 0) return false;     let remainderX = x;   let reverseX = 0;

while (remainderX) {     reverseX = reverseX * 10 + remainderX % 10;     remainderX = Math.trunc(remainderX / 10);   }

return x === reverseX; };