9.回文数 |刷题打卡

165 阅读1分钟

掘金团队号上线,助你 Offer 临门! 点击 查看详情

一、题目描述:

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。

 

二、思路分析:

  • 整数转换为字符串-->数组-->数组反转-->字符串 ,然后比较是否相等
  • 参考整数反转的方法

三、AC 代码

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
  return String(x) === String(x).split('').reverse().join('');
};

四、总结

  • 当然不止一种方法,也看到很多方法实现,

  • 可以利用整数反转的逻辑来实现

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function(x) {
    if(x < 0 || (!(x % 10) && x)) return false;
    const num = x;
    let result = 0;
    while(x !== 0) {
        result = result * 10 + x % 10;
        x = (x / 10) | 0;
    }
    return (result | 0) === result ? result === num: 0;

};

当然了也看到别的方法,觉得可能有点繁琐,比如:

1、先算出数字总位数
2、每次比较首位和末尾
3、去掉首位和末尾继续比较

仅供学习参考

参考题目