9.回文数字

判断一个整数是否是一个回文数字。不使用额外的存储空间。

比如

123321返回true.

12324返回false.

解析:

一种思路是将数字转化为字符串,然后判断回文,但是此方法会使用额外的存储空间。

其实这道题目考验我们对数字的处理技巧,如何获取以及如何去除一个数字的高位和低位。

获取数字的低位可以对10取余。

而获取数字的高位,我们需要知道这个数字的位数,也就是是10的几次方,记为div,可以将数字通过不断除10,并判断剩余结果是否大于10得到。

然后比较高位和低位是否相等。

然后去掉数字的高低位,再把div/100.

对当前div取余即可去掉数字高位,除以10即可去掉低位。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int isPalindrome(int x)  
{
if(x<0) return 0;`

int div = 1;
while((x/div) >= 10)
div*=10;

int left = 0, right = 0;

while(x>0)
{
left = x/div;
right = x%10;
if(left != right) return 0;
x=(x%div)/10;
div=div/100;
}

return 1;

}