JavaScript实现判定回文数

308 阅读1分钟

回文数问题实质上是一个倒序数字的问题。其代码实现思路一般可以分为半截法(截取并倒序后半部分数字,与前半部分比对)和倒序法(倒序整个数字并与原数字比较)。两者的具体实现比较相似。

不过遗憾的是,先前有很多网上流传的版本在倒位时都没有进行取整处理,结果会导致在判定非三位的数字时出错。

半截法

"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;
}