Skip to content

力扣链接:9.回文数

难度:⭐

解题关键词:数字

解题思路:首先先将一些不可能成为回文数的情况排除掉,比如负数肯定不能是,然后如果是以 0 结尾的,那么它开头必须是 0,这样只有 0 才满足,其他都不满足。之后我们将后面一半的数字进行反转,之后和剩下的左半部分对比。对比的时候有两种情况,一种是 1221(12 和 12),或者 12 和 123(12321),这两种都能算是回文数

typescript
function isPalindrome(x: number): boolean {
  // 把负数和结尾为0但本身不是0的情况排除掉
  if (x < 0 || (x % 10 === 0 && x !== 0)) {
    return false;
  }

  let reverseNumber = 0;

  // 反转一半数字
  while (reverseNumber < x) {
    reverseNumber = reverseNumber * 10 + (x % 10);
    x = Math.floor(x / 10);
  }

  // 一种是 1221(12 和 12),或者 12 和 123(12321)
  return x === reverseNumber || x === Math.floor(reverseNumber / 10);
}