首页  > 教育解读  > java二进制数是否为回文数

java二进制数是否为回文数

2025-05-09 10:59:44
张老师
张老师已认证

张老师为您分享以下优质知识

要判断Java整数的二进制表示是否为回文数,可以采用以下方法:

一、核心思路

二进制转换:

将整数转换为二进制字符串。

回文判断:

通过双指针法或字符串反转法比较字符串的首尾字符是否相同。

二、实现方法

使用字符串反转法

将整数转换为二进制字符串后,反转字符串并与原字符串比较。

```java

public boolean isBinaryPalindrome(int x) {

String binary = Integer.toBinaryString(x);

return binary.equals(binary.reverse().toString());

}

```

使用双指针法

通过遍历二进制字符串,从首尾向中间逐位比较字符是否相同。

```java

public boolean isBinaryPalindrome(int x) {

String binary = Integer.toBinaryString(x);

int left = 0, right = binary.length() - 1;

while (left < right) {

if (binary.charAt(left) != binary.charAt(right)) {

return false;

}

left++;

right--;

}

return true;

}

```

三、注意事项

负数处理:

负数的二进制表示以符号位开头(如-1的二进制为`1000...`),通常不视为回文数,需在判断前排除负数。

效率优化:双指针法相比字符串反转法更节省空间,尤其适用于处理大整数。

四、完整示例代码

```java

public class BinaryPalindromeChecker {

public static boolean isBinaryPalindrome(int x) {

if (x < 0) return false; // 负数不考虑

String binary = Integer.toBinaryString(x);

int left = 0, right = binary.length() - 1;

while (left < right) {

if (binary.charAt(left) != binary.charAt(right)) {

return false;

}

left++;

right--;

}

return true;

}

public static void main(String[] args) {

int num1 = 9; // 二进制1001,是回文

int num2 = 10; // 二进制1010,不是回文

System.out.println(num1 + " 是二进制回文数: " + isBinaryPalindrome(num1)); // 输出: true

System.out.println(num2 + " 是二进制回文数: " + isBinaryPalindrome(num2)); // 输出: false

}

}

```

通过上述方法,可以高效地判断整数的二进制表示是否为回文数。