判斷整數是否為回文數。負數非回文,不使用額外空間(即不轉字符串)。
len(x / 10^i) % 10反轉後半部分驗證:
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) return false;
int rev = 0;
while (x > rev) {
rev = rev * 10 + x % 10;
x /= 10;
}
return x == rev || x == rev / 10; // 奇/偶長度
}
};
x % 10 == 0 && x != 0 排除 10, 100 等尾隨 0 的數x > rev 保證只反轉一半rev/10 中被忽略