class Solution {
public boolean isPalindrome(int x) {
if( x <0 || (x % 10 == 0 && x != 0)){
return false;
}
int reverseNumber = 0;
while( x > reverseNumber){
reverseNumber = reverseNumber*10 + x%10;
x /= 10;
}
return x == reverseNumber || x == reverseNumber/10;
}
}
现在让我们考虑如何恢复上一半的数字。对于号码1221
,如果我们这样做1221
% 10
,我们得到最后一个数字1
,得到第二个数字,我们需要删除最后一个数字1221
,我们可以通过将它除以10来实现1221
/ 10 = 122
。然后我们可以通过将模数乘以10得到最后一个数字122
% 10 = 2
,如果我们将最后一位乘以10,并添加第二个最后一个数字1 * 10
+ 2 = 12
,则它给出我们想要的还原数字。继续这个过程将给我们更多的数字的恢复的数字。
现在的问题是,我们怎么知道我们已经达到了这个数字的一半?
由于我们将数字除以10,并将反转数乘以10,当原始数字小于反转数时,这意味着我们已经处理了一半数字。