461. 汉明距离

比眉伴天荒 2022-12-02 01:12 297阅读 0赞

题目:

461. 汉明距离
在这里插入图片描述

题解:

在这里插入图片描述
可以参考:
面试题15. 二进制中1的个数

代码:

  1. public class code461 {
  2. // // 方法一: 内置位计数功能
  3. // public static int hammingDistance(int x, int y) {
  4. // return Integer.bitCount(x ^ y);
  5. // }
  6. // // 方法二: 使用toBinaryString函数
  7. // public static int hammingDistance(int x, int y) {
  8. // String str = Integer.toBinaryString(x ^ y);
  9. // char a[] = str.toCharArray();
  10. // int res = 0;
  11. // for(int i = 0; i < a.length; i++)
  12. // {
  13. // if(a[i] == '1')
  14. // {
  15. // res++;
  16. // }
  17. // }
  18. // return res;
  19. // }
  20. // // 方法三: 逐位运算
  21. // public static int hammingDistance(int x, int y) {
  22. // int n = x ^ y;
  23. // int res = 0;
  24. // while(n != 0) // 必须是n!=0 而不能是n>0, 因为输入的可能是负数
  25. // {
  26. // res = res + (n & 1);
  27. // n = n >>> 1;
  28. // }
  29. // return res;
  30. // }
  31. // 方法四: 巧用 n & (n - 1)
  32. public static int hammingDistance(int x, int y) {
  33. int n = x ^ y;
  34. int res = 0;
  35. while(n != 0) // 必须是n!=0 而不能是n>0, 因为输入的可能是负数
  36. {
  37. res = res + 1;
  38. n = n & (n - 1);
  39. }
  40. return res;
  41. }
  42. public static void main(String[] args) {
  43. int x = 1;
  44. int y = 4;
  45. int res = hammingDistance(x, y);
  46. System.out.println(res);
  47. }
  48. }

参考:

  1. 汉明距离
  2. 按位异或—>判断二进制位中1的个数
  3. 一行轻松解决

发表评论

表情:
评论列表 (有 0 条评论,297人围观)

还没有评论,来说两句吧...

相关阅读

    相关 461. 距离

    两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y,计算并返回它们之间的汉明距离。 示例 1: 输入:x = 1,

    相关 LeetCode 461. 距离

    两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y,计算它们之间的汉明距离。 注意: 0 ≤ x, y < 231. 利用

    相关 461. 距离

    两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y,计算它们之间的汉明距离。 注意: 0 ≤ x, y < 231. 示例