LeetCodeDay29 —— 位1的个数☆
作者:
GoMomi | 来源:发表于
2018-05-07 13:07 被阅读0次191. 位1的个数
描述
- 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。
示例
示例1 :
输入: 11
输出: 3
解释: 整数 11 的二进制表示为 00000000000000000000000000001011
示例 2:
输入: 128
输出: 1
解释: 整数 128 的二进制表示为 00000000000000000000000010000000
思路
- 与0x01作'&'操作得到末尾的1,循环右移得到每一位的1。
- 由于是1的个数,所以'&'操作可以改为对2求余‘%’,右移可改为除2。
class Solution_191_01 {
public:
int hammingWeight(uint32_t n) {
int cnt = 0;
while (n) {
int tmp = n & 0x01;
if (tmp == 1) ++cnt;
n = n >> 1;
}
return cnt;
}
};
class Solution_191_02 {
public:
int hammingWeight(uint32_t n) {
int cnt = 0;
while(n) {
cnt += n % 2;
n /= 2;
}
return cnt;
}
};
本文标题:LeetCodeDay29 —— 位1的个数☆
本文链接:https://www.haomeiwen.com/subject/primrftx.html
网友评论