LeetCode 461. 汉明距离 or LintCode 365. 二进制中有多少个1

题目一:LeetCode 461. 汉明距离

  • LeetCode 461.明距离(Hamming Distance)
  • 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。

注意

  • 0 ≤ x, y < 2^31.

示例

LeetCode 461 汉明距离/LintCode 365 统计二进制中1的个数-LMLPHP

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

样例

  • 给定 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;
}
}
05-11 15:55