给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
示例 1:
输入:x = 121 输出:true
示例 2:
输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。
提示:
-231 <= x <= 231 - 1
进阶:你能不将整数转为字符串来解决这个问题吗?
思路:
现在开始颠倒数字
第一步:
12345 % 10 = 5;求个位上的数
12345 / 10 =1234;降位
第二步:
1234 % 10 = 4;求十位上的数
1234 / 10 = 123; 降位
5 * 10 + 4 = 54;开始颠倒
第三步:
123 % 10 = 3; 求百位上的数
123 / 10 = 12; 降位
54 * 10 + 3 = 543; 继续颠倒
第四步:
12 % 10 = 2; 求千位上的数
12 / 10 = 1; 降位
543 * 10 + 2 = 5432; 继续颠倒
第五步:
1 % 10 = 1; 求万位上的数
1 / 10 = 0; 降位
5432 * 10 + 1 = 54321; 颠倒完毕
判断颠倒完毕的数字与输入的数字是否相同即可。
代码:
class Solution {
public boolean isPalindrome(int x) {
if (x<0)return false;
int a=x;
int sum=0;
while (x!=0){
sum=sum*10+x%10;
x/=10;
}
return sum==a;
}
}