汉明距离00

题目链接

汉明距离

题目描述

汉明距离00_第1张图片

注意点

  • 汉明距离指的是这两个数字对应二进制位不同的位置的数目

解答思路

  • 要找到两个数字对应二进制位不同的位置,首先要用到异或运算符,对x和y进行异或计算后,可以得到二进制位不同位置为1其余位置为0的二进制数s,之后再计算s中1的数量即可

代码

class Solution {
    public int hammingDistance(int x, int y) {
        // 异或操作,同0异1
        int s = x ^ y;
        int res = 0;
        while(s != 0) {
            // 按位与,判断最后一位是否为1
            res += s & 1;
            // 右移一位,即除以2
            s = s >> 1;
        }
        return res;
    }
}

关键点

  • java中Integer包装类里有bitCount可直接计算二进制数中1的数量
  • 异或运算符^,与运算符&,右移运算符>>

你可能感兴趣的:(算法TOP100,算法,leetcode,java,数据结构)