题目:
判断一个非负整数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; }
};