判断一个整数是否为回文串
问题:
Determine whether an integer is a palindrome. Do this without extra space.
翻译:
判断一个整数是否为回文串,不要使用额外的空间。
解题方案:
对于位数是偶数位的整数,我们只需要将整数平均分为两部分:高位部分和低位部分,将低位部分反转并和高位部分比较,如果相等,那么就是回文串。
对于位数是奇数位的整数,我们只需要按照低位部分比高位部分多一位划分,并且删除掉低位部分的首位数字并且反转低位数字再比较即可。
代码如下:
public boolean isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) return false;
int revert = 0;
while (x > revert) {
revert = revert * 10 + x % 10;
x /= 10;
}
return x == revert || x == revert / 10;
}