关于一个判断Integer数是否为回文数的算法问题

来源:互联网 发布:开源房产cms 编辑:程序博客网 时间:2024/06/13 01:54

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

自己虽然也写出了能得到正确结果的答案,但看到大神写的后,就无颜贴自己繁琐的东西了。

看到的算法如下:

public boolean isPalindrome(int x) {    if (x<0 || (x!=0 && x%10==0)) return false;    int rev = 0;    while (x>rev){    rev = rev*10 + x%10;    x = x/10;    }    return (x==rev || x==rev/10);}
无疑是比较精简的算法,大概的解题方法是:

1. 先排除负数 /非零 /个位数字为零的数字;

2.接下来作出类似于将数字串对折直至两边长度对齐或长度差为1的两个数字;

例如:给出数字为 123321

rev x

第一次 1 12332

第二次 12 1233

第三次 123 123

3.当rev 大于/等于x,这时如果数字是回文数,那么这样对折得到的数字也就是相等的(长度为奇数位的除去中间数);


原创粉丝点击