题意
判断一个数是否是回文数,要求O(1)空间。
思路
如果O(1)空间的话,那么可以考虑逆转这个数字,但是会导致溢出。
比如要判断123494321是否是回文串,我们只需要比较前一半和后一半,即1234和4321,所以只需要逆转数字的后一半即可。
代码
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0) return false;
int l = 0, t = x;
while (t) {
t /= 10;
l++;
}
int halfL = l / 2;
int backHalf = 0;
for (int i = 0; i < halfL; i++) {
int tx = x % 10;
x /= 10;
backHalf *= 10;
backHalf += tx;
}
if (l & 1) x /= 10;
return x == backHalf;
}
};

本文介绍了一种使用O(1)空间复杂度判断整数是否为回文数的方法。通过将数字后半部分反转并与前半部分进行对比,实现高效判断。
718

被折叠的 条评论
为什么被折叠?



