您的位置:首页 > 其它

判断一个数是否回文数的巧妙解法

2015-11-25 00:01 232 查看
·回文数的定义:

对于非负数 其左右两边完全相同 则是回文。 e.g: 121 11 等

对于负数 其绝对值左右两边完全相同 则是回文。 e.g: -121 -11 等

设计一个算法判断给定的数是否为回文数,如果是,输出true 反之 输出false;

贴代码:

#include <iostream>
#include <math.h>

using namespace std;

bool isPadlindrome(int n)
{
// 如果是int类型的最小值 显然不是回文数
if (n == INT_MIN)
{
return false;
}

// 绝对值
n = abs(n);

int tmp = 1;

// 将tmp位数变为与n一致
while(n / tmp >= 10) // 防止tmp溢出
{
tmp *= 10;
}

// n = 0 表示所有位比较完
while(n != 0)
{
// 最高位 != 最低位
if (n / tmp != n % 10)
{
return false;
}

// 最高位 = 最低位 去掉最高位 去掉最低位
// 继续比较
n = (n % tmp) / 10;
tmp /= 100;
}

return true;
}

int main(void)
{
int n;
cin>>n;

if (isPadlindrome(n))
{
cout<<"true"<<endl;
}
else
{
cout<<"false"<<endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: