import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param x int整型
* @return bool布尔型
*/
public boolean isPalindrome (int x) {
// write code here
// 处理边界情况,负数和末尾为0的正数一定不是回文数
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int rev = 0; // 存储反转后的数字
while (x > rev) {
int lw = x % 10; // 获取最低位的数字
rev = rev * 10 + lw; // 将最低位的数字添加到反转后的数字中
x /= 10; // 剥离已处理的最低位数字
}
// 当数字长度为奇数时,去掉中间的数字判断是否相等
// 当数字长度为偶数时,直接比较两个数字是否相等
return x == rev || x == rev / 10;
}
}
该题使用的是Java编程语言。
该题考察的知识点:
- 数学运算
- 边界条件处理
代码的文字解释如下:
- 首先边界检查
- 初始化一个变量rev用于存储反转后的数字。
- 进入循环,当原始数字x大于反转后的数字rev时,执行以下操作:通过取模运算获取x的最低位的数字lw。将最低位的数字lw添加到反转后的数字rev的末尾。通过整除运算剥离已处理的最低位数字。
- 循环结束后,判断原始数字x和反转后的数字rev是否相等。如果原始数字长度为奇数,去掉中间的数字后比较是否相等。如果原始数字长度为偶数,则直接比较两个数字是否相等。
- 相等,则返回true,否则返回false。

京公网安备 11010502036488号