题解 | #牛的回文编号III# java

牛的回文编号III

https://www.nowcoder.com/practice/6af8b6e39b004329a48cc2cd823e5b30

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param x int整型
     * @return bool布尔型
     */
    public boolean isPalindromeNumberIII (int x) {
        // write code here
        int[] a = new int[32];
        Arrays.fill(a, 0);

        if (x < 0) {
            a[0] = 1;
            x += Math.pow(2, 31);
        }

        for (int i = 1; i < a.length; i++) {
            a[i] = (int) (x / Math.pow(2, 31 - i));
            x -= a[i] * Math.pow(2, 31 - i);
        }

        for (int i = 0; i < a.length; i++) {
            if (a[i] != a[a.length - 1 - i]) {
                return false;
            }
        }

        return true;
    }
}

这个题目涉及到以下知识点

  1. 二进制表示和运算
  2. 整数溢出处理
  3. 循环遍历
  4. 数组操作
  5. 数学函数API: pow 或 Math.pow进行指数运算。

代码的文字解释如下:

  • 如果输入整数 x 为负数,将其转换为非负数,并标记符号位为1,以便在数组中还原补码表示。
  • 使用数组 a 存储整数的二进制表示,数组的每个元素对应一个二进制位。
  • 通过循环,将整数的二进制表示逐位存储在数组中。
  • 使用循环遍历数组,对数组中的二进制位进行比较,从最高位到最低位,判断是否是回文数的特征。
  • 如果有不一致的地方,说明不是回文数,返回 false。
  • 如果所有位都一致,说明是回文数,返回 true。
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:22
怎么这么多逆天求职者,救救我救救我救救我😭
flmz_Kk:哈哈哈哈哈哈,这么多求职者,肯定有那一两个逆天的
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
昨天 12:07
门头沟学院 Java
勇敢牛牛不怕困难
投递OPPO等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务