题目:

给你一个整数 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
来源:力扣(LeetCode)

解法一:

采用一个临时变量保存x,再用另一个变量result用来保存计算结果
每次遍历时,都将x%10的余数保存,并将这个余数在一个循环中 * 10,
而自变量x则每次取整,
最后将temp与result比较是否一致

public static boolean isPalindrome(int x) {
//保存结果
int result = 0;
//保存最初的值
int temp = x;
//如果x=0时中断循环
while (x != 0){
//保存余数
result = result * 10 + x % 10;
//取整
x = x / 10;
}
return result == temp;
}

解示二:

转化成字符串数组,从两边遍历比较

public static boolean isPalindrome2(int x) {
if (x < 0) {
return false;
}
char[] str = String.valueOf(x).toCharArray();
int left = 0;
int right = str.length - 1;
while (left < right) {
if(str[left] != str[right]){
return false;
}
left ++;
right --;
}
return true;
}