【leetCode】461. Hamming Distance

来源:互联网 发布:淘宝店怎么登陆千牛 编辑:程序博客网 时间:2024/06/11 10:20

The Hamming distance between two integers is the number of positions at which the corresponding bits are different.

Given two integers x and y, calculate the Hamming distance.

Note:
0 ≤ xy < 231.

Example:

Input: x = 1, y = 4Output: 2Explanation:1   (0 0 0 1)4   (0 1 0 0)       ?   ?The above arrows point to positions where the corresponding bits are different.
汉明距离是指x、y的二进制表示中,相同位置上数字不相同的所有情况数。

var hammingDistance = function(x, y) {  var arrX=[];  var arrY=[];  toArray(x,arrX);  toArray(y,arrY);  var count=0;  var len=arrX.length>arrY.length?arrX.length:arrY.length;  for(var i=0;i<len;i++){    if (arrX[i]!==1) {      arrX[i]=0;    }    if (arrY[i]!==1) {      arrY[i]=0;    }  }  for(var i=0;i<len;i++){    if(arrX[i]!=arrY[i]){      count++;    }  }  return count;};function toArray(x,arr){    var ret=x%2;    arr.push(ret);    var left=parseInt(x/2);    if(left>1){        toArray(left,arr);    }else{      arr.push(left);    }}
总体思路就是先转化成2进制,再把两个数组空位填0;最后比较

后来去查了一下大家的做法。。人家直接把两个数异或之后再转二进制,数有多少个1就好了,感觉智商被压制。。

顺便又想起来js有直接转2进制的实现。不需要自己写。就当复习一下二进制的转化好了。。

改良版代码:

var hammingDistance = function(x, y) {    var a=x^y;    var b=a.toString(2).split("");    var count=0;    for(var i=b.length-1;i>=0;i--){        if(b[i]==1){count++}    }      return count;};

但是其实。。运行时间并没有减少。。不过代码简洁了很多~~



原创粉丝点击