Palindrome Number

Problem Description

Given an integer x, return true if x is a palindrome, and false otherwise.

 

Example 1:

Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.

Example 2:

Input: x = -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: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

 

Constraints:

 

Follow up: Could you solve it without converting the integer to a string?

Solution (JavaScript)

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
//     solution 1
//     let a = x.toString().split('');
    
//     return a.slice(0, Math.ceil(a.length/2)).join('') 
//         == a.slice(a.length - Math.ceil(a.length/2), a.length).reverse().join('');
    
    let str = x.toString();
    function isPal(s) {
        if([0, 1].includes(s.length))
            return true;
        if(s.slice(0,1) != s.slice(s.length-1, s.length))
            return false;
        return isPal(s.slice(1,s.length-1));
    }
    
    return isPal(str);
};