您的位置:首页 > 其它

Leetcode(9)之回文数

u3860932 2020-01-04 18:11 477 查看

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

题目描述:

解题思路:

只要反转后面一半的位数,和前面剩下的一半的数(向上取整)比,如果一样就是回文数。如果这个数是奇数位,比如12321,我们翻转最后3位就是123,前面剩下的两位是12,那么只要确定 123 / 10 == 12 就行了。

注意特殊情况,负数都不可能是回文数,能被10整除且不是0的不可能是回文数

代码:

public bool IsPalindrome(int x)
{
if (x < 0) return false;
if (x % 10 == 0 && x != 0) return false;

int revertedNum = 0;
while (x > revertedNum)
{
revertedNum = 10 * revertedNum + x % 10;
x /= 10;
if (x == revertedNum || x / 10 == revertedNum) return true;
}

return x == revertedNum || x == revertedNum / 10;
}
标签: