1. 程式人生 > >【LeetCode】漢明距離的演算法及運用

【LeetCode】漢明距離的演算法及運用

1、什麼是漢明距離
 漢明距離,從二進位制方面來看,就是兩個等長字串的二進位制對應 bit 不相同的位個數,例如

1011
1000 //漢明距離為2
1100
1010 //漢明距離是2

2.計算漢明距離的演算法

 思路:

  01.將兩個給定的數進行 異或(^)運算後儲存在變數a,漢明距離就是a的二進位制中1的個數

  02.當a不為0時,和0x01進行按位與(&)運算。如果結果為1,則統計變數加1

  03.將a右移一位,重複第02步

  程式碼:

 class Solution { 
  public:
     int hammingDistance
(int x, int y) { int cnt = 0; x=x^y; while(x!=0) { if(x&0x01) cnt++; x=x>>1; } return cnt; } };

 這裡寫圖片描述 

如若用Python來寫,^在Python中是指“按位異或運算子”:當兩對應的二進位相異時,結果為1