/**
* @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 ;
};
我仍然得到错误的输出为假,但我的逻辑是正确的。这是一个leetcode回文问题,我正在用javascript逻辑尝试它是正确的,但仍然无法弄清楚。
只有一个问题:
在JavaScript中,数字默认为浮点数字,因此/
执行浮点除法。你需要截断:
x = Math.floor(x / 10);
关于你的代码的备注:
构造体if (boolean) return true; else false
是一种反模式。由于boolean
已经代表了您想要返回的值,所以您应该只返回它
return num == y;
您的逻辑看起来不错,但执行过程中出现了一些小错误。请使用以下片段,它应该可以工作:
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;
}