第二次
C++
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0) return false;
int base = 1;
for (int num = x; num / 10 > 0; num /= 10)
base *= 10;
while (x != 0)
if (x / base != x % 10) {
return false;
} else {
x = (x % base) / 10;
base /= 100;
}
return true;
}
};
Python
class Solution(object):
def isPalindrome(self, x):
if x < 0:
return False
base = 1
while x >= base * 10:
base *= 10
while x > 0:
if int(x / base) != x % 10:
return False
# calculate x first, then base
x = int((x % base) / 10)
base /= 100
return True
第一次
参考了孙佰贵的题解
比较数字的最高位和最低位,若不等,返回false;
反之,去掉数字的最高位和最低位,开始新的迭代。
代码:
class Solution
{
public:
bool isPalindrome(int x)
{
if (x < 0)
{
return false;
}
int rightmost = 1;
for (int copy = x/10; copy>0; copy/=10, rightmost*=10) {}
while (x != 0)
{
if (x/rightmost != x%10)
{
return false;
} else
{
x = (x%rightmost)/10; // cut off the rightmost and leftmost digits
rightmost /= 100;
}
}
return true;
}
};