码迷,mamicode.com
首页 > 其他好文 > 详细

判断整形回文数

时间:2017-11-07 01:36:48      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:大于   amp   leetcode   false   log   bool   执行   etc   temp   

题意:

判断一个整数是否为回文数:

1、负数不是回文数

2、个位数一定是回文数

3、12321、6666、11等类似这样的数是回文数

下面是我写的代码:

 public boolean isPalindrome(int x) {
        if(x < 0){
            return false;
        }else if(x<10){
            return true;
        }
        int a=10,b=10;
        while(x/a > 9) a *= 10;
        if(x/a != x%b){
            return false;
        }else{
            a = a/10;
            b = b*10;
            while(a >= b){
                int temp1 = (x%(a*10))/a;
                int temp2 = (x/(b/10))%10;
                if(temp1 != temp2)
                    return false;
                a = a/10;
                b = b*10; 
            }
        }
        return true;
    }

思路:

1 首先判断是否是正数

2 判断是否是个位数

3 根据算数特性,逐个提出对应位比较是否相等,一旦有不想等马上返回false,如果执行完成还没有不同,就在结尾返回true。

leetcode讨论区方法:

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 设置一个数为rev=0

2 判断输入数字x是否大于rev,如果大于则进入循环,否则跳出到第4步

3 令rev = rev*10 + x%10 且 x=x/10 , 进入下一个循环

4 如果x是回文数,那么此时的x=rev或者x=rev/10

判断整形回文数

标签:大于   amp   leetcode   false   log   bool   执行   etc   temp   

原文地址:http://www.cnblogs.com/K-artorias/p/7795870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!