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,當原始數字小於反轉數時,這意味着我們已經處理了一半數字。