Leetcode(9)之回文数

落花浮王杯 提交于 2020-01-06 21:44:55

【推荐】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;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!