判断一个数字是否是回文

问题:

给一个数字,判断该数字是否是回文。比如 1221是回文,而123不是。

分析:

判断一个数字是否是回文,我们可以先把它转成字符串,然后根据回文“对称”的特性进行判断:查看第 x 个字符是否与第 n - x + 1 字符是否相等 (x 从1开始,n/2 结束, n 是指数字长度)。但是,这道题因为是数字,有一种更好的解法。即根据原始数字,通过数学方法构建出它的回文数字,如果原始数字大小等于回文数字大小,那么该数字是回文,否则不是。

代码如下:

bool isPalindrome(int originalNumber) {
    int palindrome = 0;
    int origin = originalNumber;

    // get the palindrome
    while(originalNumber != 0) {
        palindrome = palindrome * 10 + originalNumber % 10;
        originalNumber /= 10;
    }

    return palindrome == origin ;
}

本文算法参考: http://codercareer.blogspot.com/2011/11/no-23-palindrome-numbers.html

转载请注明出处: http://blog.csdn.net/beiyeqingteng.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值