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编程语言。

该题考察的知识点:

  • 数学运算
  • 边界条件处理

代码的文字解释如下:

  1. 首先边界检查
  2. 初始化一个变量rev用于存储反转后的数字。
  3. 进入循环,当原始数字x大于反转后的数字rev时,执行以下操作:通过取模运算获取x的最低位的数字lw。将最低位的数字lw添加到反转后的数字rev的末尾。通过整除运算剥离已处理的最低位数字。
  4. 循环结束后,判断原始数字x和反转后的数字rev是否相等。如果原始数字长度为奇数,去掉中间的数字后比较是否相等。如果原始数字长度为偶数,则直接比较两个数字是否相等。
  5. 相等,则返回true,否则返回false。