一、先转换为字符串,再利用反转函数:
class Solution1 {
public:
bool isPalindrome(int x) {
if (x < 0)
return false;
string temp = to_string(x);
string temp_re = to_string(x);
reverse(temp_re.begin(), temp_re.end());
if (temp == temp_re)
return true;
else
return false;
}
};
二、(官方解法)利用取余乘十,与原数比较,这里只要反转一半,比如12345,我们只要反转到后三位得到543,原来的数变成12,这两数不相等,则返回false;同样,如果是12321,反转后三位得到123,原来的数变成12,因为123/10=12则返回true:
class Solution2 {
public:
bool isPalindrome(int x) {
if (x < 0 || x % 10 == 0 && x != 0)
return false;
int x_re = 0;
while (x_re < x) {
x_re = x % 10 + x_re * 10;
x = x / 10;
}
if (x == x_re||x == x_re / 10)
return true;
else
return false;
}
};