标签:leetcoed reverse bits reverse integer number of 1 bits
https://leetcode.com/problems/reverse-bits/
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; } };
https://leetcode.com/problems/reverse-integer/
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; } stack<int> temp; 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; } };
LeetCode—Reverse Bits ,1 Bit和数字的二进制情况相关
标签:leetcoed reverse bits reverse integer number of 1 bits
原文地址:http://blog.csdn.net/xietingcandice/article/details/45015763