Skip to main content

回文数

题目

判断一个数字是否为回文数.

提示:
  • -2³¹ <= x <= 2³¹ - 1
示例
输入: x = 121
输出: true
输入: x = -121
输出: false
解释: 从左向右读,-121. 从右向左读,121-. 因此它不是一个回文数.

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

题解

跟第 7. 整数反转 题如出一辙, 都是使用取模逆排法, 即通过把数字看成, 来将它反转. 前提可以做几个边界判断:

  • 负数一定不是回文数
  • 0 - 9 一定是回文数
  • 10 的倍数一定不是回文数(除了 0)
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function (x) {
if (x < 0) return false
if (x < 10) return true
if (x % 10 === 0) return false

let n = 0,
y = x
while (x) {
// 取模逆排法
n = n * 10 + (x % 10)
x = (x / 10) | 0
}
return n === y
}