您的位置:首页 > 其它

求一个整数是否是回文(正着念和反着念都一样)

2016-06-22 00:18 295 查看
要求:不需要额外的空间。

分析:

1、负整数是回文? (例如,-1)(NO)

2、如果你正在考虑的整数转换为字符串,请注意使用额外空间的限制。

3、可以尝试扭转一个整数。前提是你已经解决了这个问题“反向整型”颠倒整数可能溢出。

新思路:

不断地取第一位和最后一位(10 进制下)进行比较,相等则取第二位和倒数第二位,直到完成比较或者中途找到了不一致的位。

CODE

#define  _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

bool IsPalindrome(int x)
{
if (x < 0)
{
return false;
}
int divsion = 1;
while (x / divsion >= 10)
{
divsion *= 10;
}
while (x)
{
int tmp = x/divsion;
if (tmp == x % 10)
{
x = x%divsion / 10;//将比较过的最高位去掉得到下一次要比较的
divsion /= 100;
}
else
{
return false;
}
}
return true;
}

void test()
{
int x = 12344321;
cout << IsPalindrome(x) << endl;
}

int main()
{
test();
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息