/** * @param {number} x * @return {boolean} */ var isPalindrome = function(x) { if (x < 0 || x === null){ return false; } let s = x.toString(10); if (s.length % 2 === 0){ return validPalindrome(s, true); } else { return validPalindrome(s, false); } }; function validPalindrome(s, even){ let valid = false; //Start as same char for odd lengths let i = Math.floor(s.length / 2); let j = i; //Middle is between chars for even lengths if (even){ //Start i to the left of j --i; } while(i >= 0 && j < s.length){ if (s.charAt(i) === s.charAt(j)){ valid = true; --i; ++j; } else { valid = false; break; } } return valid; }