这题只需要使用异或^运算,异或就是相同记为0,不同记为1,那么两个数的二进制中有几个不同位置就能算出来,但是异或得到的也是一个二进制数,需要和1进行与计算,才能得到十进制的每一位上的数
class Solution { public int hammingDistance(int x, int y) { //XOR算法,相同为0,不同为1 int s = x ^ y; int count = 0; while(s != 0) { count += s & 1; s >>= 1; } return count; } }