码迷,mamicode.com
首页 > 编程语言 > 详细

判断回文数算法

时间:2019-07-23 13:15:27      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:简单的   过程   方法   如何   ali   ret   个数   负数   number   

回文数是指正序(从左到右)读和倒序(从右到左)读都是一样的整数。

比如形如 121,1221,13531 的数字都是回文数,但 -121,10,25 等等都不是回文数。

如何判断一个数是回文数?这是一个很简单的算法,最常见的实现方式是使用一个栈或其他方法,把数字序列逆序,然后判断逆序后的数字是否等于原先的数字。显然这种实现方式需要至少 n 次循环才能完成判断。

本文提供一种更巧妙的方法,利用回文数的特点,只需要循环 \(\frac{n}{2}\) 次就可以完成判断了,代码及注释如下:

bool isPalindrome(int x)
{
    // 负数的第一位带有负号'-',所以一定不是回文数
    // 长度超过一位的数字,第一位肯定不是 0,因此末尾是 0,则一定不是回文数
    if (x < 0 || (x % 10 == 0 && x != 0))
        return false;
    // 余下的代码,如果看不懂原理,就带入几个具体的数字,手工模拟运行过程,就很容易明白了
    int revertedNumber = 0;
    while (x > revertedNumber) {
        revertedNumber = revertedNumber * 10 + x % 10;
        x /= 10;
    }
    return x == revertedNumber || x == revertedNumber / 10;
}

判断回文数算法

标签:简单的   过程   方法   如何   ali   ret   个数   负数   number   

原文地址:https://www.cnblogs.com/faterazer/p/11230846.html

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