判断一个整数是否是一个回文数字。不使用额外的存储空间。
比如
123321返回true.
12324返回false.
解析:
一种思路是将数字转化为字符串,然后判断回文,但是此方法会使用额外的存储空间。
其实这道题目考验我们对数字的处理技巧,如何获取以及如何去除一个数字的高位和低位。
获取数字的低位可以对10取余。
而获取数字的高位,我们需要知道这个数字的位数,也就是是10的几次方,记为div,可以将数字通过不断除10,并判断剩余结果是否大于10得到。
然后比较高位和低位是否相等。
然后去掉数字的高低位,再把div/100.
对当前div取余即可去掉数字高位,除以10即可去掉低位。
1 | int isPalindrome(int x) |