判断一个整数是否是回文数。不能使用辅助空间。
一些提示:
负整数可以是回文数吗?(例如 -1)
如果你打算把整数转为字符串,请注意不允许使用辅助空间的限制。
你也可以考虑将数字颠倒。但是如果你已经解决了 “颠倒整数” 问题的话,就会注意到颠倒整数时可能会发生溢出。你怎么来解决这个问题呢?
本题有一种比较通用的解决方式。
本题的通用解决方式就是取余数,n除以10^i可以取到首位,取10的余数可以取到个位,由于不能使用额外的空间所以不能转换成字符进行比较。
下面是别人的解答,我自己写的还要冗杂一点就不贴了。
public class palindrome {
public boolean isPalindrome(int x) {
if (x < 0) return false;
int div = 1;
while (x / div >= 10) div *= 10;
while (x > 0) {
int left = x / div;
int right = x % 10;
if (left != right) return false;
x = (x % div) / 10;
div /= 100;
}
return true;
}
};