題目詳情
Determine whether an integer is a palindrome. Do this without extra space.
題目要求咱們在不佔用額外空間的前提下,判斷一個整數是不是迴文數。數組
想法
- 這道題的描述有一丟丟讓人一頭霧水,這個不佔用額外空間的意思主要是讓咱們不要嘗試去轉換成字符串,或者是使用數組進行解題。
- 有一點須要注意的是,負數不算做迴文數。
- 那麼這道題如何解題呢?迴文數和第7題(獲取整數的翻轉數)有必定的類似之處。而第7題當時的方法是,對整數取除10的餘數,便是當前整數的最後一位。
- 這道題咱們也能夠先對整數進行翻轉,而後比較翻轉後的整數是否等於輸入的整數,以肯定這個數是否爲迴文數。
- 可是還有一種更快速的想法,由於若是這個輸入的整數爲迴文數。那麼它翻轉後一半的數字以後,應該和前半段的數字相等,咱們將採用這種思路進行解題。
解法
if(x < 0 || x !=0 && x %10 ==0) return false;
int res = 0;
while(x > res){
res = res*10+x%10;
x = x/10;
}
return(x==res || x == res/10);