力扣链接: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);
}