一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第11天,点击查看活动详情。
题目描述
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
示例 1:
输入:x = 121
输出:true
示例 2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
思路
判断是一个数是不是回文数,首先先看清楚题目,经过整理发现,负数一定不是回文数,这种情况可以直接返回false,然后如果这个数是正数,将这个数倒过来的数值计算出来,然后进行数值比较,相等的话 就是回文数,这样就可以直接返回,不然就不是回文数,返回false,例如:545,先计算他的倒数也是545,相等,545就是回文数, 例如:322,倒数是223,不相等,就不是回文数,例如:22,倒数也是22,相等,22也是回文数,9也是回文数,倒数与他相等
代码
public static boolean isPalindrome(int x) {
try {
//判断是不是负数,是的话不用进行后续操作,直接就是false
if (x < 0) {
return false;
}
//临时变量,保存倒数
int cur = 0;
//临时变量,存储x
int num = x;
//开始循环
while (num != 0) {
//将数值反转
cur = cur * 10 + num % 10;
//降位
num /= 10;
}
return cur == x;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static void main(String[] args) {
System.out.println(isPalindrome(545));
System.out.println(isPalindrome(322));
System.out.println(isPalindrome(22));
}
运行结果
true
false
true
总结
这个题目跟整数反转其实挺像的,做过整数反转之后,对这个问题基本上就是秒,只要能够把当前数的倒数计算出来,这个题目就做完了。然后数值溢出就用了try catch来处理,溢出必然不是倒数u,直接返回false就行。