题解 | #牛的回文编号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; } }
这个题目涉及到以下知识点
- 二进制表示和运算
- 整数溢出处理
- 循环遍历
- 数组操作
- 数学函数API: pow 或 Math.pow进行指数运算。
代码的文字解释如下:
- 如果输入整数 x 为负数,将其转换为非负数,并标记符号位为1,以便在数组中还原补码表示。
- 使用数组 a 存储整数的二进制表示,数组的每个元素对应一个二进制位。
- 通过循环,将整数的二进制表示逐位存储在数组中。
- 使用循环遍历数组,对数组中的二进制位进行比较,从最高位到最低位,判断是否是回文数的特征。
- 如果有不一致的地方,说明不是回文数,返回 false。
- 如果所有位都一致,说明是回文数,返回 true。