/** * @param {number} x * @return {boolean} */ var isPalindrome = function(x) { var y=x,num=0,rem; while(x>0) { rem=x%10; num=(num*10)+rem; x=x/10; } if(num==y) return true; else return false ; };Sigo obteniendo un resultado incorrecto como falso, pero mi lógica es correcta. Esta es la pregunta del palíndromo de leetcode. Lo estoy intentando con la lógica de JavaScript, es correcta pero aún no puedo resolverlo.
Su lógica parece estar bien, pero la ejecución tiene algunos errores menores. Utilice el siguiente fragmento, debería funcionar:
var isPalindrome = function(x) { if (x < 0) { return false; } // Store the number in a variable let number = x; // This will store the reverse of the number let reverse = 0; while (number > 0) { reverse = reverse * 10 + number % 10; number = parseInt(number / 10); } return x === reverse; }Solo hay un problema:
En JavaScript, los números son números de punto flotante por defecto, por lo que / realiza una división de punto flotante. Necesitas truncar eso:
x = Math.floor(x / 10);Una observación sobre su código:
La construcción if (boolean) return true; else false de if (boolean) return true; else false es un antipatrón. Dado que boolean ya representa el valor que desea devolver, solo debe devolverlo. Así que en tu caso haz:
return num == y;