数据结构与算法之回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

进阶:

你能不将整数转为字符串来解决这个问题吗?

示例

输入: 121
输出: true

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

分析

小于0的肯定不是. 由于回文数是原数与反转后的数相等所以我们可以先将其反转然后与元数进行比较即可

代码

Python3(转字符串)

def isPalindrome(self, x):
  if x < 0: return False
  s = str(x)
  return s[::-1] == s

Python3

def isPalindrome(self, x):
  if x < 0: return False

  tempNum = x
  now = 0

  while tempNum != 0:
    now = now * 10 + tempNum % 10
    tempNum = tempNum // 10

  return now == x

JavaScript

function isPalindrome(x) {
  if (x < 0) return false

  let tempNum = x 
  // 反转后的值
  let now = 0
  // 反转
  while (tempNum !== 0) {
    // 1232 0*10+1232%10=2
    // 123 2*10+123%10=23
    // 12 23*10+12%10=232
    // 1 232*10+1%10=2321
    now = now * 10 + tempNum % 10
    // 123 12 1 0
    tempNum = Math.floor(tempNum / 10)
  }
  return now === x
}