题解 | #牛的回文编号#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编程语言。

该题考察的知识点:

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

代码的文字解释如下:

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

相关推荐

03-05 12:52
吉林大学 Java
挣K存W养DOG:他的价值在于把他家里积攒的财富回馈给社会
点赞 评论 收藏
分享
02-11 12:20
门头沟学院 Java
面试中的青提很胆小:我不信有比我们学校更逆天的,计算机专业就业第一位是我们学校二餐厅的打印店
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务