算法---回文数的解决方法

48 阅读1分钟

最近在刷算法题,把遇到的问题记录一下,算法小白,不喜勿喷哈。

题目

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

回文数

是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

  • 例如,121 是回文,而 123 不是。

思路

看x是不是回文数,回文数的规则是先从后往前把x的每一位拿出来,用这个技巧生成一个数字y,如果y和x相等,则说明x是回文数,那怎么才能拿到x的每一位呢?

解法:可以使用对10取余数的方法可以得到x的每一位。然后再对x除以10,依次得到从后往前的数,然后再取余得到倒数第2个数。依次类推,得到从后往前的所有的数。然后再用y= y*10 + last_num得到最终的数。代码如下:


let isPalindrome = function (x) {
    if (x < 0) {
      return false
    }
    let y = 0
    let temp = x
    while (temp > 0) {
      let last_num = temp % 10
      temp = Math.floor(temp / 10)

      y = y * 10 + last_num
    }
    return y === x
}
console.log(isPalindrome(121))