给你一个整数
x
,如果x
是一个回文整数,返回true
;否则,返回false
。回文数
是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。示例 1:
输入:x = 121 输出:true示例 2:
输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:
输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。
我的方法有些简单,如果有更好的,欢迎指导
解题思路
根据回文数的定义,我们可以通过将数字倒转过来与原数字进行比较是否相等来决定返回值是false还是true。我们可以设置循环语句,先将数字个位上的数单独提出来也就是“p%10”,然后在进入下一循环前将数字位数减一,也就是代码中的"p/=10",这样每次单独提出来的数字就是下一位的数字,然后通过“renum*10”循环就可以将数字位数个位数变成最高位以此类推。
首先,我们通过题目示例可知负数一定不是回文数,然后个位数一定是回文数,因为个位数倒转后还是原数字。因此只需将数字倒转过来然后判断是否相等即可。
class Solution {
public:
bool isPalindrome(long x) {
long p=x;
long renum = 0;
if (x < 0 ) {
return false;
}
else {
while (renum< x) {
if (p < 10) {
renum = renum * 10 +p;
}
else {
renum = renum * 10 + p % 10;
p /= 10;
}
} if(renum==x)
return true;
else
return false;
}
}
};