原題地址: https://leetcode-cn.com/probl...
repo
地址: https://github.com/pigpigever...
兩個整數之間的漢明距離指的是這兩個數字對應二進制位不一樣的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。
好比說存在這樣兩個二進制數值:javascript
001
100
它們之間的漢明距離就是 2
,咱們要求的就是兩個二進制數值中位數不同的地方,好比你是 1
他是 0
,那麼漢明距離就 +1
。前端
異或運算是相對基礎的知識,可是因爲在平時的開發中幾乎不會用到,不免生疏。這裏簡單羅列下常見的異或運算:java
&
: 按二進制位進行 與運算
,相同位同時爲 1
時結果爲 1
,不然爲 0
|
: 按二進制位進行 或運算
,相同位存在 0
和 1
時結果爲 1
,不然爲 1
^
: 按二進制位進行 異或運算
,相同位相同時爲 0
,不然爲 1
>>
: 右移運算是將一個二進制位的操做數按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位或者一概補 0
<<
: 左移運算是將一個二進制位的操做數按指定移動的位數向左移位,移出位被丟棄,右邊的空位一概補 0
思路其實很簡單,以下:git
+1
/** * @param {number} x * @param {number} y * @return {number} */ var hammingDistance = function(x, y) { let ans = 0 while (x !== 0 || y !== 0) { if ((x & 1) !== (y & 1)) { ans++ } x >>= 1 y >>= 1 } return ans };
一直在 LeetCode 上刷題,以前還加入了組織,有興趣加入一塊兒學習的同窗能夠在下方留言或者關注個人微信公衆號「tony老師的前端補習班」並在後臺留言,能夠進羣跟大佬們一塊兒學習。
github