暴力破解使用toString方法将十进制转换成二进制,再比较每个字符是否相同
var hammingDistance = function(x, y) {
var ans = 0;
x = x.toString(2)
y = y.toString(2)
var max = '',min = ''
if(x.length>y.length){
max = x
min = y
}else{
max = y
min = x
}
let maxi = max.length-1
let mini = min.length-1
while(maxi>=0&&mini>=0){
if(max[maxi]!==min[mini])ans++
maxi--
mini--
}
while(maxi>=0){
if(max[maxi]!=='0')ans++
maxi--
}
return ans
};
辗转相除法
var hammingDistance = function(x, y) {
var ans = 0
while(x&&y){
var tempx = x%2
var tempy = y%2
if(tempx!==tempy)ans++;
x = Math.floor(x/2)
y = Math.floor(y/2)
}
var temp = Math.max(x,y)
while(temp){
if(temp%2!==0)ans++;
temp = Math.floor(temp/2)
}
return ans
};
位移法
var hammingDistance = function(x, y) {
let s = x^y,ans= 0
while(s!=0){
ans += s & 1
s >>= 1
}
return ans
};