You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
738 B
46 lines
738 B
/**
|
|
* @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;
|
|
}
|
|
|