Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as00111001011110000010100101000000).
簡單的做法就是遍歷一遍,但是這個方法很低效,貌似也沒有什麼更好的辦法了
class Solution { public: uint32_t reverseBits(uint32_t n) { if(0 == n) { return 0; } int res = 0; for(int i = 0; i < 32; i++) { if( n & 1) { res += (1 << (31-i)); } n = n >> 1; } return res; } };
Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).
For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011
, so the function should return 3.
class Solution { public: int hammingWeight(uint32_t n) { if(0 == n) { return 0; } int res = 0; while(n) { n = n&(n-1); res++; } return res; } };
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321 這裡計算過程並不復雜,但是注意是否會超過范圍
class Solution { public: int reverse(int x) { long long xx = x; //防止負數超過范文 if(0 == x) { return 0; } int flag = 0; if(x < 0) { flag = 1; xx = -x; } stacktemp; while(xx) { temp.push(xx%10); xx = xx/10; } long long index = 1; long long res = 0; while(!temp.empty()) { res += temp.top()*index; index = index*10; temp.pop(); } if(flag) { res = res*(-1); if(res < INT_MIN) return 0; } if(res > INT_MAX) { return 0; } return res; } };