`
java-mans
  • 浏览: 11390006 次
文章分类
社区版块
存档分类
最新评论

判断一个数字是否是回文[#62]

 
阅读更多

问题:

给一个数字,判断该数字是否是回文。比如 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://blog.csdn.net/beiyeqingteng/article/details/7097146

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

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



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics