题目描述:
在不使用额外的内存空间的条件下判断一个整数是否是回文
提示:
负整数可以是回文吗?(比如-1)
如果你在考虑将数字转化为字符串的话,请注意一下不能使用额外空间的限制
你可以将整数翻转。但是,如果你做过题目“Reverse Integer”,你会知道将整数翻转可能会出现溢出的情况,你怎么处理这个问题?
这道题有更具普遍性的解法。
解题思路:
- 首先我们得考虑回文串的特点
- 考虑一下题目的条件,不允许使用额外的空间
- 从参数 x 出发,依次从末尾取出一个数,累计计算出新的数
- 若新的数与参数 x 相同,则返回 true,否则返回 false
代码如下:
public boolean isPalindrome(int x) {
if(x < 0) return false;
int reverse = 0;
int t = x;
// 从末尾出发,累计计算出新数
while(t > 0){
reverse = reverse * 10 + t % 10;
t = t / 10;
}
// 判断该数是否是回文串
return reverse == x;
}
}