题目:

判断一个非负整数n的二进制表示是否为回文数

分析:

众所周知,判断回文数很简单,但是从十进制转换成二进制有点难想,所以就用到了,c++中特有的手段,位运算。

所谓的位运算:

n&1:这个代表取出n的二进制的最后一位;
n>>=1:这代表删除n的二进制的最右一位。

知道这些之后,做起题来就很简单了。
源码:(只写了函数部分)
class Solution {
public:

/**
 * @param n: non-negative integer n.
 * @return: return whether a binary representation of a non-negative integer n is a palindrome.
 */
bool isPalindrome(int n) {
    // Write your code here
    int arr[32];
    int length=0;
    do
    {
        arr[length++]=n&1;
        n>>=1;
    }while(n>0);
    for(int i=0;i<length/2;i++)
    {
        if(arr[i]!=arr[length-1-i])
        {
            return false;
        }
    }
    return true;
}

};