题解 | #牛的回文编号#java
牛的回文编号
https://www.nowcoder.com/practice/f864e31a772240f1b4310fbdc27fad48
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。