提交 83053c5e 编写于 作者: GreyZeng's avatar GreyZeng

update code

上级 b1899ea1
package git.snippet.bit;
// TODO
// 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。
// 示例 1:
// 输入:00000000000000000000000000001011
// 输出:3
// 解释:输入的二进制串 00000000000000000000000000001011中,共有三位为 '1'。
// 示例 2:
// 输入:00000000000000000000000010000000
// 输出:1
// 解释:输入的二进制串 00000000000000000000000010000000中,共有一位为 '1'。
// 示例 3:
// 输入:11111111111111111111111111111101
// 输出:31
// 解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。
// 提示:
// 输入必须是长度为 32 的 二进制串 。
// 进阶:
......@@ -22,7 +10,7 @@ package git.snippet.bit;
public class LeetCode_0191_NumberOf1Bits {
// TODO
// 最优解
public int hammingWeight(int n) {
public static int hammingWeight(int n) {
n = (n & 0x55555555) + ((n >>> 1) & 0x55555555);
n = (n & 0x33333333) + ((n >>> 2) & 0x33333333);
n = (n & 0x0f0f0f0f) + ((n >>> 4) & 0x0f0f0f0f);
......@@ -34,15 +22,16 @@ public class LeetCode_0191_NumberOf1Bits {
// 常规解法
// 一个数的二进制有多少个1
// 最右侧的1 (N&-N)
public int hammingWeight2(int n) {
int num = 0;
public static int hammingWeight2(int n) {
int ans = 0;
while (n != 0) {
int mostRightOne = (n) & ((~n) + 1);
int mostRightOne = n & (-n);
if ((mostRightOne & n) != 0) {
num++;
ans++;
}
n ^= mostRightOne;
}
return num;
return ans;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册