The task
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Example 1:
Input: 121 Output: true
Example 2:
Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3:
Input: 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome. Follow up:
Could you solve it without converting the integer to a string?
My solution with converting number to string
const isPalindrome = n => n >= 0 && Number([...`${n}`].reverse().join("")) === n;
console.log(isPalindrome(121));
My solution without converting number to string
const isPalindrome2 = n => {
if (n < 0) { return false; }
let num = Math.abs(n);
const arr = [];
let i = 1;
while (num > 0) {
const min = num % (10 ** i);
num = num - min;
i++;
arr.push(min);
}
i = i - 2;
let j = 0;
return n === arr.reduce((res, x) => {
const add = (x/ (10 ** j)) * (10 ** i);
res += add;
i--;
j++;
return res;
}, 0);
};
console.log(isPalindrome2(121));