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

[Leetcode]-Palindrome Number

时间:2015-07-01 18:22:52      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:leetcode

Determine whether an integer is a palindrome. Do this without extra space.
题目:判断int数据是否为回文数
注意:负数不是回文数,0是最小的回文数
思路:此题和前面一道 求int数的反序差不多http://blog.csdn.net/xiabodan/article/details/46674133
1、第一种解法不需要边界判断,暴力求解,依次比较最后一位与第一位、倒数第二位与第二位……….一直比较N/2次,N为数据x的十进制位数
2、第二种解法由于需要对数据x取反系,所以要边界检查。当然也可以采用一个long long的数据去存反序数据r

bool isPalindrome(int x) {

    //解法1
 /*
    int n = 0;
    int tem = x;
    int i = 0;
    if(x < 0) return false;
    while(tem)
    {
        n++;
        tem = tem / 10;
    }
    int m = n;
    for(i=0;i<n/2;i++)
    {
        if(((x/(int)pow(10,i))%10) != (x/(int)pow(10,m-1))%10)
            return false;
        m--;
    }
    return true;
 */
    //解法2 
    int INT_MAX_DIV10 = INT_MAX / 10;

    int r = 0;
    if(x<0) return false;
    if(x<10) return true;
    int t = x;
    int tem = 0;//边界缓存
    while(x)
    {
        if(r > INT_MAX_DIV10) 
            return 0;
        r = r * 10 ;
        tem = x % 10 ;
        if(INT_MAX - tem < r) 
            return 0;
        r = r + tem;
        x = x/10;
    }
    return (r == t);   
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

[Leetcode]-Palindrome Number

标签:leetcode

原文地址:http://blog.csdn.net/xiabodan/article/details/46711751

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