題目如下:
Determine whether an integer is a palindrome. Do this without extra space.
解題解題思路:
該問題最大的難道在於無額外的空間,如果沒有此限制,可以將數字轉換成String然後對String反轉比較兩個字符串是否相等就可以了,但是,既然有了此限制,就得去想其他方法了。先借用一箇中間變量判斷該數字的長度,然後根據數的長度和迴文數字的性質進行操作;注意負數不是迴文數。
提交的代碼如下:
public boolean isPalindrome(int x) {
if(x < 0 || x > 2147483647) return false;
if(x < 10) return true;
int i= 0;
int tmp = x;
while(tmp > 0){
tmp /= 10;
i++;
}
while(i> 0){
i--;
if((x % 10) != (int)(x / Math.pow(10, i))){
return false;
}
x = (int)(x % Math.pow(10, i) - x % 10) / 10;
i--;
}
return true;
}