给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
示例 1:
输入:x = 121
输出:true
示例 2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
示例 4:
输入:x = -101
输出:false
解法一
/**
* <p>Title: </p>
* <p>Description: </p>
*
* @author zcm
*/
class Solution {
public boolean isPalindrome(int x) {
boolean res = false;
if (x < 0) return res;
StringBuilder str = new StringBuilder(Integer.toString(x));
String lr = str.toString();
//StringBuilder rl = lr.reverse(); 这样反转并没有创建新的StringBuilder对象
//StringBuilder rl = new StringBuilder(lr.reverse()); 虽然创建了两个StringBuilder,但是
// lr.reverse() 会把 lr 本身给反转了
String rl = str.reverse().toString();
if (lr.equals(rl)){
res = true;
}
return res;
}
}
解法二(最快)
/**
* <p>Title: </p>
* <p>Description: </p>
*
* @author zcm
*/
class Solution {
public boolean isPalindrome(int x) {
if (x < 0) return false;
int y = x;
long res = 0;
while (x != 0){
res = res * 10 + x % 10;
x /= 10;
}
return res == y;
}
}