給定一個整數,判斷它是否為回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。例如,121 是回文,而 123 不是。負數不是回文(如 -1)。
限制條件:不能使用額外空間(即不能將整數轉換為字符串或數組)。
既然不能用字符串,我們可以通過數學運算反轉整數的一半或全部數字來比較。但需注意反轉後可能溢出(參考 "Reverse Integer" 題)。更通用的方法是:
reverted = 0。x > reverted 時,將 x 的最後一位疊加到 reverted:reverted = reverted * 10 + x % 10; x /= 10;x == reverted(偶數位)或 x == reverted / 10(奇數位),則為回文。class Solution {
public:
bool isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) return false;
int reverted = 0;
while (x > reverted) {
reverted = reverted * 10 + x % 10;
x /= 10;
}
return x == reverted || x == reverted / 10;
}
};
這道題考察對整數操作的熟練度與邊界條件處理,反轉一半數字是標準解法。