
张老师为您分享以下优质知识
要判断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
}
}
```
通过上述方法,可以高效地判断整数的二进制表示是否为回文数。