LeetCode 461. 汉明距离 or LintCode 365. 二进制中有多少个1
题目一:LeetCode 461. 汉明距离
- LeetCode 461.明距离(Hamming Distance)
- 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。
注意
- 0 ≤ x, y < 2^31.
示例
Java 代码
class Solution {
public int hammingDistance(int x, int y) {
int i = x ^ y;
int count = 0;
while (i != 0) {
count++;
i = (i - 1) & i;
}
return count;
}
}
题目二:LintCode 365. 二进制中有多少个1
- LintCode 365. 二进制中有多少个1
- 计算在一个 32 位的整数的二进制表示中有多少个
1
。
样例
- 给定
32
(100000),返回1
。 - 给定
5
(101),返回2
。 - 给定
1023
(1111111111),返回10
。
Java 代码
public class Solution {
/*
* @param num: An integer
* @return: An integer
*/
public int countOnes(int num) {
// write your code here
int count = 0;
while (num != 0) {
num = num & (num - 1);
count++;
}
return count;
}
}