回文数问题实质上是一个倒序数字的问题。其代码实现思路一般可以分为半截法(截取并倒序后半部分数字,与前半部分比对)和倒序法(倒序整个数字并与原数字比较)。两者的具体实现比较相似。
不过遗憾的是,先前有很多网上流传的版本在倒位时都没有进行取整处理,结果会导致在判定非三位的数字时出错。
半截法
"use strict";
function isPalindrome(num) {
if(num < 0 || (num !== 0 && num%10 === 0)) return;
let reverseNum = 0;
while(reverseNum < num) {
reverseNum = reverseNum*10 + num%10;
num = Number.parseInt(num/10);
}
return reverseNum === num || Number.parseInt(reverseNum/10) === num;
}
倒序法
"use strict";
function isPalindrome(num) {
if(num < 0 || (num !== 0 && num%10 === 0)) return;
let reverseNum = 0;
let _num = num;
while(_num > 0) {
reverseNum = reverseNum*10 + _num%10;
_num = Number.parseInt(_num/10);
}
return reverseNum === num || Number.parseInt(reverseNum/10) === num;
}