原题目地址,想看原题目描述的可以点击查看:
https://leetcode-cn.com/problems/palindrome-number/
话不多说,直接上代码
思路:通过%10与/10得到各个位置数的倒置,将倒置的数计算后,和原数一致则表示是回文数。
/**
* 判断一个数,是否是回文数
*
* @param x 待判断的数
* @return 判断的结果,true:是回文数,false:不是回文数
*/
public boolean isPalindrome(int x) {
int temp = x;
int reverse = 0;
if (x < 0) {
return false;
} else {
while (x / 10 != 0) {
reverse = reverse * 10 + x % 10;
x /= 10;
}
reverse = reverse * 10 + x;
}
return temp == reverse;
}
上一种解法中是把数计算了,当然,也可以把各个位置的数存入集合容器,然后判断集合元素是否是对称的。
/**
* 判断一个数,是否是回文数
*
* @param x 待判断的数
* @return 判断的结果,true:是回文数,false:不是回文数
*/
public boolean isPalindrome(int x) {
boolean result = true;
List<Integer> lists = new ArrayList<>();
if (x < 0) {
result = false;
} else {
while (x / 10 != 0) {
lists.add(x % 10);
x /= 10;
}
lists.add(x);
}
for (int i = 0; i < lists.size() / 2; i++) {
if (lists.get(i) != lists.get(lists.size() - i - 1)) {
result = false;
break;
}
}
return result;
}