描述
判断一个非负整数 n
的二进制表示是否为回文数
- 我们保证
0 <= n <= 2^32 - 1
样例1
输入: n = 0
输出: True
解释:
0 的二进制表示为:0。
样例2
输入: n = 3
输出: True
解释:
3 的二进制表示为:11。
样例3
输入: n = 4
输出: False
解释:
4 的二进制表示为:100。
样例4
输入: n = 6
输出: False
解释:
6 的二进制表示为:110。
思路:
1.将n以2进制的求余 得到每一次最低位的二进制数 然后再将其逆序排序 就会得到正确的二进制数
2.利用左右双指针进行同步检查 如果有不相同的字符则不是回文数 当循环结束后如果都相同则是回文数
代码如下:
public class Solution {
/**
* @param n: non-negative integer n.
* @return: return whether a binary representation of a non-negative integer n is a palindrome.
*/
public boolean isPalindrome(int n) {
// Write your code here
//n起始数字转化为二进制
StringBuilder stringBuilder=new StringBuilder();
while(n>=1)
{
int currentNum=n%2;
stringBuilder.append(currentNum);
n=n/2;
}
stringBuilder.reverse();
System.out.println(stringBuilder.toString());
int right=stringBuilder.length()-1;
int left=0;
//左右比较即会问比较
while(left<=right)
{
if(stringBuilder.charAt(left)!=stringBuilder.charAt(right))
{
return false;
}else
{
left++;
right--;
}
}
return true;
}
}