leetcode-461-汉明距离

描述

461

思路

  1. 由题意可知:汉明距离其实就是两个数字异或之后的二进制中包含1的个数
  2. 则改题目可转变成求 x ^ y 中1的位数

代码

  1. 使用jdk中的Api接口即可实现

    class Solution{
        public int hammingDistance(int x, int y){
            return Integer.bitCount(x ^ y);
        }
    }
    
  2. t = x ^ y循环将 t 与 1 进行&操作,然后右移一位,计算1的位数

    class Solution{
        public int hammingDistance(int x, int y){
            int t = x ^ y;
            int res = 0;
            while(t != 0){
                res = t ^ 1;
                t = t >> 1;
            }
            return res; 
        }
    }
    
  3. t = x ^ y,将 t 与 t - 1 进行&操作,计算1的位数

    class Solution{
        public int hammingDistance(int x, int y){
            int t = x ^ y;
            int res = 0;
            while(t != 0){
                t = t & (t - 1);
                res ++;
            }
            return res;
        }
    }
    
posted on 2021-05-27 09:20  caoshikui  阅读(40)  评论(0)    收藏  举报