题目描述
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false.
要求:
- 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是.
-231 <= x <= 231 - 1
- 进阶:你能不将整数转为字符串来解决这个问题吗?
//输入:x = 121
//输出:true
//输入:x = -121
//输出:false
//解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
//输入:x = 10
//输出:false
//解释:从右向左读, 为 01 。因此它不是一个回文数。
//输入:x = -101
//输出:false
解题方法
方法一
此方法,参考整数反转题目的最优解题思路.先判断x是否小于0、是否最后一位数字是0,如果符合条件,直接返回false;如果不符合,则通过取余取乘,反转整数,将反转后的整数和原整数比较,返回结果.
public boolean isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int oldX = x;
int m = 0;
while (x != 0) {
m = m * 10 + x % 10;
x /= 10;
}
return oldX == m;
}
方法二
使用字符串的反转并比较,比较简单,但是题目本身不推荐.
public boolean isPalindrome(int x) {
String str =x+"";
String str2 = new StringBuilder(str).reverse().toString();
if (str.equals(str2)){
return true;
}
else{
return false;
}