• 一、题目
  • 二、解题思路
  • 三、解题代码

    一、题目

    Determine whether an integer is a palindrome. Do this without extra space.

    给定一个数字,要求判断这个数字是否为回文数字. 比如121就是回文数字,122就不是回文数字.

    二、解题思路

    题目要求只能用O(1)的空间,所以不能考虑把它转化为字符串然后reverse比较的方法。

    基本思路是每次去第一位和最后一位,如果不相同则返回false,否则继续直到位数为0。

    需要注意的点:

    1. 负数不是回文数字.
    2. 0是回文数字.

    三、解题代码

    1. public boolean isPalindrome(int x) {
    2. if(x<0)
    3. return false;
    4. int div = 1;
    5. while(div<=x/10)
    6. div *= 10;
    7. while(x>0)
    8. {
    9. if(x/div!=x%10)
    10. return false;
    11. x = (x%div)/10;
    12. div /= 100;
    13. }
    14. return true;
    15. }